我试图在eclipse插件的Java 8代码中使用JavaFX包。我能够编译它,但在运行时插件无法加载JavaFX类。看起来,OSGi插件无法从“[JAVA] \ jre \ lib \ ext \”目录加载类,但能够从“[JAVA] \ jre \ lib \”加载类。任何指示如何解决问题的人都非常感激。
**我知道有一种方法可以将e(fx)剪切或复制jfxrt.jar复制到插件类路径将解决问题,但我想知道为什么插件无法从/ ext /加载JRE的路径。
如以下链接Unresolved JavaFX packages in OSGi Felix Application中所述,我们执行了以下步骤来解决此问题。以下是OSGi配置属性。
org.osgi.framework.bundle.parent
- 指定用于引导委派的类加载器。可能的值包括:引导类加载器的引导,应用程序类加载器的应用程序,扩展类加载器的ext以及框架的类加载器的框架。默认为启动。
org.osgi.framework.system.packages
- 指定应该从框架类加载器通过System Bundle导出的以逗号分隔的包列表。框架将此设置为合理的默认值。如果指定了值,则它将替换任何默认值。
所以加入
-Dorg.osgi.framework.bundle.parent=ext
-Dorg.osgi.framework.system.packages.extra=javafx.*
VM args,它添加了所需的依赖项。