org.osgi.framework.BundleException:无法解决缺少的需求osgi.wiring.package; (osgi.wiring.package = javafx.application)

时间:2016-11-02 18:16:31

标签: java maven javafx osgi

我正在尝试运行我的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,...

如何实施上述建议,或者我该如何解决问题?

1 个答案:

答案 0 :(得分:0)

在构建框架对象的应用程序中,传入配置参数Map。您可以使用所需的javafx包在地图中设置/var/tmp//ccz0ct2G.o属性。