Пакеты OSGi вне Eclipse

Я разработал несколько пакетов с использованием OSGi Java Framework и Eclipse Indigo. Существует основной пакет, который зависит от других пакетов и в котором выполняется основная программа. Если я попытаюсь запустить все пакеты в Eclipse, все будет работать правильно, но если я сохраню каждый пакет как JAR и запускаю инфраструктуру OSGi в командной строке, я получу исключение NoClassDefFoundError, когда я пытаюсь запустить основной пакет. Класс, который не может найти, - это зависимость. Остальные пакеты получают статус АКТИВНЫЙ, основной пакет только что РАЗРЕШЕН.

Я создал пакет со всеми библиотеками, которые я использую (соединитель mysql и т. Д.), И я импортирую этот пакет в каждый пакет, в котором мне нужны эти библиотеки. Я не знаю, лучший ли это способ добиться этого. Кроме того, я использую потоки в своем приложении, и некоторые из них используют методы из разных пакетов, может ли это быть источником проблемы?

Кто-нибудь знает, что я могу сделать? Мне также нужно установить пакеты в Apache Karaf, и я получил тот же результат. Это связано с начальным уровнем каждого пакета?


person hveiga    schedule 15.10.2012    source источник
comment
Как вы экспортируете свой пакет?   -  person Rohit Jain    schedule 16.10.2012
comment
В зависимости от пакета я экспортирую весь пакет или только несколько пакетов, но для обоих я использую MANIFEST.MF. Этот файл для основного пакета: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Main Bundle-SymbolicName: MainBundle Bundle-Version: 1.0.0.qualifier Bundle-Activator: com.xaptum.messageprocessor.main.Activator Bundle-Vendor: независимо от Require-Bundle: XXXXXBundle; bundle-version = 1.0.0, YYYYYBundle; bundle-version = 1.0.0 Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: com.some.imported.package, org.osgi .framework; версия = 1.3.0   -  person hveiga    schedule 16.10.2012
comment
Я предполагаю, что Рохит спрашивал, как вы экспортируете свой пакет в файл jar ?!   -  person christian.vogel    schedule 16.10.2012
comment
Да, я экспортировал их в файлы JAR с помощью Разработка подключаемых модулей ›Развертываемые подключаемые модули и фрагменты. Извините за недопонимание. Кроме того, я думаю, что моя проблема связана с загрузкой соединителя mysql jdbc во время выполнения. Каким-то образом он не находит библиотеку, поэтому я получаю NullPointerException, а затем объект не может быть создан, и я получаю NoClassDefFoundError. Это связанная ссылка, но я еще не нашел решения: wiki.osgi.org / wiki /   -  person hveiga    schedule 16.10.2012


Ответы (1)


Хорошо, я обнаружил проблему. В Eclipse для параметра org.osgi.framework.bootdelegation по умолчанию установлено значение *, но для всех других OSGi Framework этого не происходит.

Я использую Apache Karaf прямо сейчас, и я изменил config.properties, который находится внутри etc /, со значения по умолчанию (org.apache.karaf.jaas.boot, sun. , com.sun. , javax.transaction, javax.transaction. *) в *. Это заставляет его работать, но я все еще пытаюсь распознать точную библиотеку, которую нужно загрузить, потому что установка этого параметра на * не рекомендуется.

Чтобы найти дополнительную информацию: http://wiki.osgi.org/wiki/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F

Спасибо, и я надеюсь, что это поможет другим,

person hveiga    schedule 16.10.2012