Ошибка после преобразования библиотеки org.pbjar в пакет OSGi

Я пытаюсь преобразовать библиотеку org.pbjar.jxlayer в пакет OSGi, мне это уже удалось, но когда я пытаюсь установить его в контейнер Karaf, контейнер утверждает, что для этого пакета отсутствует требование:

Невозможно разрешить ошибку 312.0: отсутствует требование [312.0] osgi.wiring.package; (osgi.wiring.package=com.sun.java.swing)

Я также поместил javax.swing в директиву импорта пакета, но проблема не устранена. Я изменил версию JDK (1.5, 1.6, 1.7), но не повезло

Можете ли вы помочь мне, пожалуйста, в решении этой проблемы.


person user2075227    schedule 01.05.2014    source источник
comment
У меня была та же проблема, поэтому я взял исходный код и сам превратил его в банку.   -  person Jakkra    schedule 01.05.2014
comment
Нужно ли мне помещать только приведенные выше инструкции в pom.xml каждого модуля SwingX, чтобы он работал нормально? Я имею в виду, нужны ли проектам swingX какие-то другие сторонние библиотеки?   -  person user2075227    schedule 01.05.2014


Ответы (1)


Таким образом, ваш пакет пытается импортировать пакет com.sun.java.swing, и когда фреймворк пытается разрешить пакет, он не может найти никого, кто экспортирует этот пакет. Это то, что сообщение об ошибке пытается сказать вам.

В Java 7 (более старые версии я не проверял) этот пакет является частью JRE. Это означает, что самый простой способ представить его в пакетах — это экспортировать его в фреймворк как «дополнительный» пакет. Вы можете настроить системное свойство при запуске вашего фреймворка, чтобы сделать это:

-Dorg.osgi.framework.system.packages.extra=com.sun.java.swing

Другой вариант, который у вас есть, — встроить этот пакет в ваш бандл. В этом случае вам не нужно экспортировать его через фреймворк (что удобно, если вы не можете перенастроить свой фреймворк), а пакет импорта также можно удалить из вашего бандла. Если у вас в конечном итоге будет много пакетов, которым это нужно, это, вероятно, не так уж удобно или хорошо, так как вы получите много частных копий пакета (вместо того, чтобы все делились одной).

person Marcel Offermans    schedule 02.05.2014
comment
Спасибо, я уже решил эту проблему, используя первый подход, добавив следующий оператор: com.sun.java.swing в etc/config.properties Karaf 3.0.0. - person user2075227; 04.05.2014