3


有谁知道是否有办法在 Eclipse 工作区中使用 JavaFX 模块?我有一个 OSGi-maven 多模块应用程序。

到目前为止,我已经尝试了几件事。

  1. 下载 JavaFX SDK 并在 Eclipse 中添加 jars 作为用户定义的库。
  2. 捆绑 JavaFX jar 并在之后将它们用作常规 OSGi 捆绑包(作为依赖项添加,之后在目标平台中添加)。

这两件事都有效。但是,在第一种情况下,每个开发人员都必须手动将这些 jar 作为库添加到类路径中。第二,对于每个平台,我们必须为每个模块提供不同的捆绑包。

如果我不做这些事情,我就会编译错误,无法找到 JavaFX 类(如预期的那样)。

有没有第三种方法可以做到这一点?通过使用一些 OSGi 功能或类似的东西?我还没有找到在 MANIFEST.MF 中添加模块的任何方法。这甚至可能吗?

我在 OSGi 框架启动器中添加了 JavaFX 模块作为 VM 参数,一切正常。但是我必须做之前提到的其中一件事情,这样我就不会出现编译错误。虚拟机参数:--module-path /path/to/javafx/sdk/11/lib --add-modules javafx.controls,javafx.graphics,javafx.base

4

1 回答 1

1

我尝试将使用 JRE 8 的 E4/OSGI/GEF/JavaFx 项目转换为 JRE 11 和 OpenJFX 11,并找到了一种方法。

就我而言,我使用 SWT 和javafx.embed.swt.FxCanvas. 在 modulepath 中包含用户定义的 JavaFX 库不起作用,在编译时生成 class not found 错误;但包括类路径中的库有效。

我也无法使用--module-path参数运行应用程序;它给了NoClassDefFoundError例外org.eclipse.swt.widgets.Canvas

我的解决方案使用 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 的调试消息。

于 2019-04-10T11:20:31.517 回答