需要从一个eclipse插件代码访问JavaFX
Need to access JavaFX from a eclipse plug-in code
我正在尝试在来自 eclipse 插件的 Java 8 代码中使用 JavaFX 包。我能够编译它,但在 运行 时插件无法加载 JavaFX class。
看起来,OSGi 插件无法从“[JAVA]\jre\lib\ext\”目录加载 classes,但能够从“[[=”加载 classes 18=]]\jre\lib\"。非常感谢任何解决问题的建议。
** 我知道有一种方法可以关闭 e(fx)clipse 或将 jfxrt.jar 复制到插件 class-path 将解决问题,但我想知道为什么插件-in 无法从 JRE 的 /ext/ 路径加载。
如下所述link
Unresolved JavaFX packages in OSGi Felix Application,我们执行了以下步骤来解决此问题。
以下是 OSGi 配置属性。
org.osgi.framework.bundle.parent
- 指定哪个 class 加载程序用于引导委托。可能的值是:引导 class 加载器的 boot,应用程序 class 加载器的 app,扩展 class 加载器的 ext,以及框架的 class 加载器的 framework。默认为开机。
org.osgi.framework.system.packages
- 指定一个逗号分隔的包列表,这些包应该通过系统包从框架 class 加载器导出。框架会将其设置为合理的默认值。如果指定了值,它将替换任何默认值。
所以通过添加
-Dorg.osgi.framework.bundle.parent=ext
-Dorg.osgi.framework.system.packages.extra=javafx.*
VM 参数,它添加了所需的依赖项。
我正在尝试在来自 eclipse 插件的 Java 8 代码中使用 JavaFX 包。我能够编译它,但在 运行 时插件无法加载 JavaFX class。 看起来,OSGi 插件无法从“[JAVA]\jre\lib\ext\”目录加载 classes,但能够从“[[=”加载 classes 18=]]\jre\lib\"。非常感谢任何解决问题的建议。
** 我知道有一种方法可以关闭 e(fx)clipse 或将 jfxrt.jar 复制到插件 class-path 将解决问题,但我想知道为什么插件-in 无法从 JRE 的 /ext/ 路径加载。
如下所述link Unresolved JavaFX packages in OSGi Felix Application,我们执行了以下步骤来解决此问题。 以下是 OSGi 配置属性。
org.osgi.framework.bundle.parent
- 指定哪个 class 加载程序用于引导委托。可能的值是:引导 class 加载器的 boot,应用程序 class 加载器的 app,扩展 class 加载器的 ext,以及框架的 class 加载器的 framework。默认为开机。
org.osgi.framework.system.packages
- 指定一个逗号分隔的包列表,这些包应该通过系统包从框架 class 加载器导出。框架会将其设置为合理的默认值。如果指定了值,它将替换任何默认值。
所以通过添加
-Dorg.osgi.framework.bundle.parent=ext
-Dorg.osgi.framework.system.packages.extra=javafx.*
VM 参数,它添加了所需的依赖项。