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?

Вы объявили Bundle-ClassPath в MANIFEST.MF вашего пакета?

Другие вопросы по тегам