Равноденствие: классы, правильно экспортируемые и импортируемые пакетами, все еще получая ClassNotFoundException - PullRequest
1 голос
/ 02 мая 2011

Во время разработки в OSGi я натолкнулся на следующее препятствие. Один набор пакетов, отвечающий за постоянство, использует класс com.mysql.jdbc.Driver, предлагаемый другим (предоставленным Springsource EBR) пакетом. В другом комплекте я настраиваю библиотеку планировщика Quartz для использования базы данных в качестве хранилища заданий. Это также делается с помощью драйвера MySQL. После запуска я получаю ClassNotFoundException. Это странно, поскольку постоянство по-прежнему работает правильно. Еще более странно, когда я пытаюсь загрузить класс вручную, используя Class.forName("com.mysql.jdbc.Driver"), он загружается правильно, подразумевая, что класс действительно доступен для загрузки.

Совпадение или нет, похоже, то же самое происходит и с Drools ... Я переупаковал некоторые из последних Jrools-контейнеров в пакеты OSGi, развернул их и при повторном запуске выскакивает ClassNotFoundException. В обоих случаях все пакеты поставщиков добавляются к обязательным пакетам в манифесте.

Этот странный вопрос звонит в какие-нибудь колокола? Я был бы рад услышать об этом ...

1 Ответ

2 голосов
/ 03 мая 2011

Это, похоже, проблема с загрузкой классов в Equinox. Я попытался исправить это с помощью заголовков DynamicImport-Package и Eclipse-BuddyPolicy, но без особого успеха. В конце концов я исправил это, переупаковав последнюю версию Quartz в виде пакета, добавив банку MySql в пакет. Это не самое красивое и элегантное решение, но оно должно быть сделано на данный момент. Если кто-нибудь может рассказать мне больше о загрузке классов, не стесняйтесь отвечать!

...