Что такое последовательность / побочные эффекты загрузчика классов JVM, когда мы создаем исполняемый файл jar с различными параметрами? - PullRequest
0 голосов
/ 14 апреля 2020

Как JVM загружает класс, когда мы используем одну из двух опций, извлекаем или упаковываем необходимые библиотеки при создании исполняемого jar-файла в eclipse Для получения подробной информации нажмите .

Сегодня я столкнулся с проблемой, где мое основное приложение использовало hibernate-core.jar, но один из тех jar, от которого зависело мое основное приложение, использовал hibernate-core-5 ... jar, когда этот зависимый jar был собран с использованием 2nd option (package), все работало правильно, но когда я переключился на 1-й вариант, чтобы построить этот jar (извлечение), я начал получать ошибку ниже.

Caused by: java.lang.ClassCastException: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider cannot be cast to org.hibernate.engine.jdbc.connections.spi.ConnectionProvider

В соответствии с SO это происходит из-за несоответствия версий, и я думаю, что это точно происходило со мной, когда я использовал опцию извлечения для создания jar.

Мое основное приложение использует spring + hibernate (3), но мой зависимый jar просто использует hibernate (5).

Что я могу интерпретировать из журналов является ConnectionProvider (Hibernate 5) не может быть создан с использованием LocalDataSourceConnectionProvider (Hibernate 3). может быть, реализация для hibernate 5 не загружается в JVM.

Изменяет ли упаковка файлов .class или .jar в исполняемый jar способ, которым классы загружаются в JVM?

...