有人知道在Eclipse工作区中是否有使用JavaFX模块的方法吗?我有一个OSGi-maven多模块应用程序。
到目前为止,我已经尝试了一些方法。
这两种方法都能起作用。但是,在第一种情况下,每个开发人员都必须手动将这些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
答案 0 :(得分:0)
我试图将使用JRE 8的E4 / OSGI / GEF / JavaFx项目转换为JRE 11和OpenJFX 11,并找到了一种方法。
就我而言,我使用SWT和javafx.embed.swt.FxCanvas
。在模块路径中包括用户定义的JavaFX库不起作用,从而在编译时生成未找到的类错误;但是将库包含在classpath中是可行的。
我也无法使用--module-path
参数运行该应用程序;它为NoClassDefFoundError
org.eclipse.swt.widgets.Canvas
例外
我的解决方案使用E(fx)剪辑,这也可能是您的第三个选择。在将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的调试消息。