我正在尝试通过eclipse插件在Java 8代码中使用JavaFX软件包。我可以编译它,但是在运行时,该插件无法加载JavaFX类。 看起来,OSGi插件无法从“ [JAVA] \ jre \ lib \ ext \”目录中加载类,但能够从“ [JAVA] \ jre \ lib \”中加载类。高度赞赏如何解决此问题的所有指示。
**我知道可以通过e(fx)clipse或将jfxrt.jar复制到插件的类路径中来解决此问题,但是我想知道为什么无法从中加载插件/ ext / JRE的路径。
答案 0 :(得分:2)
如以下链接所述 Unresolved JavaFX packages in OSGi Felix Application,我们按照以下步骤解决了该问题。 以下是OSGi配置属性。
org.osgi.framework.bundle.parent
-指定用于引导委派的类加载器。可能的值为:boot用于引导类加载器,app用于应用程序类加载器,ext用于扩展类加载器,以及框架用于框架的类加载器。默认值为启动。
org.osgi.framework.system.packages
-指定以逗号分隔的软件包列表,这些软件包应该通过系统捆绑包从框架类加载器中导出。框架会将其设置为合理的默认值。如果指定了该值,它将替换任何默认值。
因此添加
-Dorg.osgi.framework.bundle.parent=ext
-Dorg.osgi.framework.system.packages.extra=javafx.*
VM参数,它添加了必需的依赖项。