我正在尝试运行我的Maven OSGi JavaFx项目,但我一直收到以下错误:
org.osgi.framework.BundleException: Unable to resolve launcher [4](R 4.0): missing requirement [launcher [4](R 4.0)] osgi.wiring.package; (osgi.wiring.package=javafx.application) Unresolved requirements: [[launcher [4](R 4.0)] osgi.wiring.package; (osgi.wiring.package=javafx.application)]
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
at impl.App.loadBundles(App.java:84)
at impl.App.initialize(App.java:60)
at impl.App.main(App.java:26)
mvn clean package
完美无缺,我生成了项目罐。
有些阅读让我this StackOverflow answer:
JavaFX应用程序依赖于JavaFX API中的包,例如javafx.application和其他几个。
在Java 8中,javafx。*包由基本JRE提供。但是,OSGi不会自动从JRE导出每个包,因为所有JRE都有一堆普通应用程序代码无法访问的非标准包(例如com.sun。* etc)。因此,OSGi仅提供由您正在使用的Java版本的相关JCP规范定义的包。例如javax.swing,org.w3c.dom等的包
由于JavaFX不是标准,因此没有JavaFX的JCP规范,OSGi不会导出javafx。*包。但是,您可以通过在启动OSGi时设置以下配置属性来配置OSGi来执行此操作:
org.osgi.framework.system.packages.extra=javafx.application,...
如何实施上述建议,或者我该如何解决问题?
答案 0 :(得分:0)
在构建框架对象的应用程序中,传入配置参数Map。您可以使用所需的javafx包在地图中设置/var/tmp//ccz0ct2G.o
属性。