我正在尝试在 Eclipse 插件的 Java 8 代码中使用 JavaFX 包。我能够编译它,但在运行时插件无法加载 JavaFX 类。 看起来,OSGi 插件无法从“[JAVA]\jre\lib\ext\”目录加载类,但可以从“[JAVA]\jre\lib\”加载类。非常感谢任何有关如何解决该问题的指示。
** 我知道有一种方法可以关闭 e(fx)clipse 或将 jfxrt.jar 复制到插件类路径可以解决该问题,但我想知道为什么插件无法从/ext/JRE 的路径。
最佳答案
如以下链接所述 Unresolved JavaFX packages in OSGi Felix Application ,我们执行了以下步骤来解决该问题。 以下是 OSGi 配置属性。
org.osgi.framework.bundle.parent
- 指定用于启动委派的类加载器。可能的值有: boot 为引导类加载器,app 为应用程序类加载器,ext 为扩展类加载器,framework 为框架的类加载器。默认为启动。
org.osgi.framework.system.packages
- 指定应通过系统 bundle 从框架类加载器导出的以逗号分隔的包列表。框架会将其设置为合理的默认值。如果指定了该值,它将替换任何默认值。
所以通过添加
-Dorg.osgi.framework.bundle.parent=ext
-Dorg.osgi.framework.system.packages.extra=javafx.*
VM 参数,它添加了所需的依赖项。
关于java - 需要从 eclipse 插件代码访问 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282100/