有谁知道是否有办法在 Eclipse 工作区中使用 JavaFX 模块?我有一个 OSGi-maven 多模块化应用程序。
到目前为止,我已经尝试了几件事。
- 下载 JavaFX SDK 并将 jar 添加到 eclipse 中作为用户定义的库。
- 捆绑 JavaFX jar,然后将它们用作常规 OSGi bundle (添加为依赖项,然后添加到目标平台中)。
这两种方法都有效。但是,在第一种情况下,每个开发人员都必须手动将这些 jar 作为库添加到类路径中。其次,对于每个平台,我们必须为每个模块准备一个不同的包。
如果我没有做这些事情,我就会遇到无法找到 JavaFX 类的编译错误(如预期的那样)。
有第三种方法吗?通过使用一些 OSGi 功能或类似的东西? 我还没有找到在 MANIFEST.MF 中添加模块的任何方法。这可能吗?
我在 OSGi 框架启动器中添加了 JavaFX 模块作为 VM 参数,一切正常。但是我必须做前面提到的其中一件事情,这样我就不会出现编译错误。
VM 参数:--module-path/path/to/javafx/sdk/11/lib --add-modules javafx.controls,javafx.graphics,javafx.base
最佳答案
我尝试将使用 JRE 8 的 E4/OSGI/GEF/JavaFx 项目转换为 JRE 11 和 OpenJFX 11,并找到了这样做的方法。
就我而言,我使用 SWT 和 javafx.embed.swt.FxCanvas
。在模块路径中包含用户定义的 JavaFX 库不起作用,在编译时生成类未找到错误;但是在类路径中包含库是有效的。
我也无法使用 --module-path
参数运行应用程序;它为 org.eclipse.swt.widgets.Canvas
NoClassDefFoundError
异常
我的解决方案使用 E(fx)clipse,这也可能是您的第三种选择。在类路径中包含 javafx 库并在项目配置中包含 org.eclipse.fx.osgi
之后,我使用以下 VM 参数使用 E(fx)clipse 加载 JavaFX 类。
-Dosgi.framework.extensions=org.eclipse.fx.osgi -Defxclipse.java-modules.dir=[openjfx-lib-directory]
您还可以添加 -Defxclipse.osgi.hook.debug=true"
以在加载类时查看来自 E(fx)clipse 的调试消息。
关于maven - 在 OSGi 应用程序中使用 Openjfx 11 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52818494/