Установка пакета TornadoFX OSGi не удалась на Apache Felix

Я разрабатываю настольное приложение TornadoFX на основе OSGi, следуя этому toturial. Прежде чем приступить к программированию, я хотел подготовить среду OSGi. Для этого я установил Apache Felix 5.6.10 и необходимые пакеты. Felix и все необходимые пакеты работают правильно, как показано здесь (вывод команды lb):

 ID|State      |Level|Name
  0|Active     |    0|System Bundle (5.6.10)|5.6.10
  1|Active     |    1|Apache Commons Logging (1.2.0)|1.2.0
  2|Active     |    1|Apache Apache HttpClient OSGi bundle (4.5.5)|4.5.5
  3|Active     |    1|Apache Apache HttpCore OSGi bundle (4.4.9)|4.4.9
  4|Active     |    1|jansi (1.16.0)|1.16.0
  5|Resolved   |    1|JavaFX 8 OSGi extension bundle (8.0.1)|8.0.1
  7|Active     |    1|JLine Bundle (3.5.1)|3.5.1
  8|Active     |    1|kotlin-osgi-bundle (1.2.31)|1.2.31
  9|Active     |    1|Apache Felix Bundle Repository (2.0.10)|2.0.10
 10|Active     |    1|Apache Felix Configuration Admin Service (1.8.16)|1.8.16
 11|Active     |    1|Apache Felix Gogo Command (1.0.2)|1.0.2
 12|Active     |    1|Apache Felix Gogo JLine Shell (1.0.10)|1.0.10
 13|Active     |    1|Apache Felix Gogo Runtime (1.0.10)|1.0.10
 18|Active     |    1|Apache Felix Gogo Shell (1.0.0)|1.0.0
 22|Active     |    1|JSR 353 (JSON Processing) Default Provider (1.0.0)|1.0.0

Однако не могу запустить связку TornadoFX! Я установил tornadofx-1.7.15.jar с помощью install tornadofx-1.7.15.jar, что было нормально, но когда я попытался установить start, возникло следующее исключение:

Я использую java -jar bin/felix.jar в командной строке для запуска Felix. Все интересующие пакеты находятся в папке bundle под корневой папкой Felix. Кроме того, я пытаюсь заставить его работать под IntelliJ, но это может быть независимый поток.

org.osgi.framework.BundleException: Unable to resolve no.tornado.tornadofx [26](R 26.0): 
missing requirement [no.tornado.tornadofx [26](R 26.0)] osgi.wiring.package; (osgi.wiring.package=com.sun.glass.ui) Unresolved requirements:
[[no.tornado.tornadofx [26](R 26.0)] osgi.wiring.package; (osgi.wiring.package=com.sun.glass.ui)]

Теперь вопрос в том, как я могу заставить его работать? Есть ли какой-либо другой пакет, который я должен установить заранее? для чего нужен com.sun.glass.ui и как его добавить в пакеты или путь к классам?


person javadch    schedule 02.04.2018    source источник
comment
Я использовал команду установки install bundle/tornadofx-1.7.15.jar, в то время как командная строка находится в корневом каталоге Felix.   -  person javadch    schedule 02.04.2018


Ответы (1)


Это сообщение об ошибке означает, что пакет no.tornado.tornadofx импортирует пакет com.sun.glass.ui, но у вас не установлен пакет, который экспортирует этот пакет.

Этот пакет поставляется как часть некоторых JDK, но OSGi не экспортирует по умолчанию, поскольку он не является частью стандарта Java SE. Предполагая, что ваш JDK включает его, вы можете экспортировать из системного пакета, установив свойство запуска:

org.osgi.framework.system.packages.extra=com.sun.glass.ui

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

person Neil Bartlett    schedule 02.04.2018
comment
Я обновил вопрос. Я использую командную строку Frelix. - person javadch; 02.04.2018
comment
Я добавил решение @Neil в файл config.properties в папке conf. Спасибо, @Нил. - person javadch; 03.04.2018