java.lang.NoClassDefFoundError на OSGi - PullRequest
6 голосов
/ 03 марта 2011

У меня есть связка с объявленным активатором. Этот активатор создает JFrame и показывает его.

Работает на Eclipse как проект плагина и работает нормально. Когда я надеваю Феликс, он больше не работает. Это показывает: java.lang.NoClassDefFoundError: com / griep / ui / MainFrame

Но MainFrame находится в том же пакете, что и активатор, как общедоступный класс. Я не понимаю, почему загрузчик классов не находит класс.

Кто-нибудь знает, что происходит?

Ответы [ 4 ]

6 голосов
/ 03 марта 2011

Убедитесь, что вы импортируете пакет javax.swing в свой пакет:

Import-Package: javax.swing
2 голосов
/ 16 февраля 2013

Используйте этот аргумент VM:

-Djava.specification.version=1.6

Это заставит Феликса сделать доступным набор системных пакетов по умолчанию для Java 6, который включает javax.swing и его подпакеты

1 голос
/ 04 марта 2011

Теперь это работает! Я настроил делегирование загрузки в конфигурационном файле!

Я положил org.osgi.framework.bootdelegation = в config.ini.

Вы оба должны сказать мне это, прежде чем, ребята, хе-хе. Теперь я прочитал в вики равноденствия, что в соответствии со спецификацией OSGi мне нужно определить каждый пакет, который мне нужно использовать, и я считаю, что это правильно, потому что некоторые настроенные виртуальные машины могут иметь больше библиотек, чем другие.

Но Eclipse не работает в этой концепции импорта каждого пакета Java (например, javax.swing). Я сообщу об этом в Eclipse Bugzilla.

Большое спасибо вам обоим!

PS: Какая у тебя книга @Neil?

0 голосов
/ 03 марта 2011

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

...