Я разрабатываю богатое приложение на основе JavaFX и контейнера OSGi Felix. Когда началась моя JavaFX, org.osgi.framework.BundleException брошен, указывающим, что framwork не мог телеграфировать мои JavaFX пакетов:Неразрешенные пакеты JavaFX в приложении OSGi Felix
ERROR: Bundle app-impl-bundle [3] Error starting eclipse-project:T:\workspace\fast-osgi\app-impl-bundle\ (org.osgi.framework.BundleException: Unresolved constraint in bundle app-impl-bundle [3]: Unable to resolve 3.0: missing requirement [3.0] osgi.wiring.package; (&(osgi.wiring.package=javafx.stage)(version>=2.2.0)))
Вот мой MANIFEST.MF файл:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: app-impl-bundle
Bundle-SymbolicName: app-impl-bundle
Bundle-Version: 1.0.0.qualifier
Require-Bundle: app-bundle;bundle-version="0.0.1"
Bundle-Activator: com.mycompany.app.impl.Activator
Import-Package: javafx.stage;version="2.2.0",
javax.xml.parsers,
org.osgi.framework;version="1.8.0",
org.w3c.dom,
org.xml.sax
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ClassPath: .,
target/lib/log4j-1.2.17.jar
А вот аргументы VM, используемые для запуска OSGi Framework (я запустить свой проект под Затмения Луны, используя this plugin):
-Dosgi.requiredJavaVersion=1.8 -Dorg.osgi.framework.bundle.parent=ext
Последний аргумент не влияет. Несмотря на это this article, которые говорят, что он работает на Равноденствие ...
Я нашел решение, добавив эту опцию к аргументам VM:
-Dorg.osgi.framework.system.packages.extra=javafx.stage
Но это не очень гибким.
Считаете ли вы, что реализация Felix OSGi является проблемой? Должен ли он работать только с Equinox? Кто-нибудь может мне помочь? Правильно ли это?
Хотя я не знаю об OSGi, мне любопытно узнать, почему 'javafx.stage; version =" 2.2.0 "'? – ItachiUchiha
Возможно, в [e (fx) клипсе есть что-то] (http://www.eclipse.org/efxclipse/index.html#about-tooling): «К сожалению, JavaFX не был написан с OSGi, поэтому есть различные Источники ошибок при запуске внутри OSGi. Эти проблемы включают расположение двоичных файлов JavaFX в ваших установках Java и загрузке классов из-за правил видимости OSGi. e (fx) clipse предоставляет вспомогательные библиотеки для решения всех этих проблем и делает запись JavaFX приложения на вершине Eclipse Equinox чувствуют себя так же легко, как и SWT и Swing ». Я ничего не знаю о OSGi; просто цитируя документ. – jewelsea
@jewelsea Хорошо, но поскольку JDK8 JavaFX загружается в ExtClassloader, поэтому он должен теоретически работать :( –