我正在尝试运行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工作得很好,我生成了我的项目jars。
有些人四处阅读,让我读到this StackOverflow answer:
JavaFX应用程序依赖于来自JavaFX API的包,如javafx.application和其他几个。 在Java 8中,javafx.*包由基JRE提供。但是,OSGi并不会自动从JRE导出每个包,仅仅是因为所有的JRE都有一堆非标准的包(例如com.sun.*等),而正常的应用程序代码不应该访问这些包。因此,OSGi只为您使用的Java版本提供了相关的JCP规范定义的包。例如,包,如javax.swing、org.w3c.dom等。 因为JavaFX不是一个标准,所以没有针对JavaFX的JCP规范,OSGi也不导出javafx.*包。但是,可以通过在启动OSGi时设置以下配置属性来为您配置OSGi:
org.osgi.framework.system.packages.extra=javafx.application,...
我怎样才能落实上述建议,或如何解决问题?
发布于 2016-11-02 20:03:12
在构建框架对象的应用程序中,传递配置参数的映射。您可以使用所需的javafx包在映射中设置org.osgi.framework.system.packages.extra属性。
https://stackoverflow.com/questions/40387025
复制相似问题