java.lang.NoClassDefFoundError на OSGi
У меня есть связка с объявленным активатором. Этот активатор создаст JFrame и покажет его.
Работая на Eclipse как проект плагина, он работает нормально. Когда я надеваю Феликс, он больше не работает. Это показывает: java.lang.NoClassDefFoundError: com/griep/ui/MainFrame
Но MainFrame находится в том же пакете, что и активатор, как, конечно, публичный класс. Я не понимаю, почему загрузчик классов не находит класс.
Кто-нибудь знает, что происходит?
4 ответа
Убедитесь, что вы импортируете javax.swing
пакет в ваш пакет:
Import-Package: javax.swing
Используйте этот аргумент VM:
-Djava.specification.version=1.6
Это заставит Феликса сделать доступным набор системных пакетов по умолчанию для Java 6, который включает javax.swing
и его подпакеты
Теперь это работает! Я настроил делегирование загрузки в конфигурационном файле!
Я помещаю org.osgi.framework.bootdelegation= в config.ini.
Вы оба должны сказать мне это, прежде чем, ребята, хе-хе. Теперь я прочитал в вики равноденствия, что в соответствии со спецификацией OSGi мне нужно определить каждый пакет, который мне нужно использовать, и я считаю, что это правильно, потому что некоторые настроенные виртуальные машины могут иметь больше библиотек, чем другие.
Но Eclipse не работает в этой концепции импорта каждого пакета Java (например, javax.swing). Я сообщу об этом в Eclipse Bugzilla.
Большое спасибо вам обоим!
PS: Какова ваша книга @Neil?