无法在“ Zulu” JDK 11下将SWT与JavaFX集成

时间:2019-10-30 14:17:01

标签: java eclipse javafx swt

我们想在RCP应用程序的Eclipse插件中同时使用SWT和JavaFX。不幸的是,我们在Java 11下遇到将SWT与JavaFX集成的问题。构建环境使用e(fx)clipse 3.5。我们正在针对Azul Systems的“ Zulu” JDK 11社区版本以及Azul的OpenJFX版本进行开发。

以前,我们是使用Java 8开发的。那时,我们的构建使用了指向jfxswt.jar的编译时类路径,该路径位于JDK的jre/lib目录中。在运行时,我们没有使用任何特殊的类路径设置。

我们现在正在尝试迁移到Java11。在这里,此JAR已变成javafx-swt.jar,并且位于JDK的lib目录中。在编译时设置类路径来引用此JAR似乎不再足够:似乎在运行时也必须这样做。如果我们不这样做,则会出现错误(java.lang.NoClassDefFoundError: javafx/embed/swt/FXCanvas)。

作为测试,我们通过实验将javafx-swt.jar嵌入到实现我们的Eclipse插件的JAR中。然后,我们在该插件的.classpath文件中对其进行了引用,并且代码按预期工作。不幸的是,出于法律和其他原因,我们不能以这种方式嵌入JAR。

关于Java模块的注释:当我们发出javafx.swt命令时,--list-module不会出现在输出中。我们尝试使用参数-p /path/to/JDK/lib/javafx-swt.jar --add-modules javafx.swt运行应用程序,但这似乎无法解决问题。

我的问题:是否可以设置类或模块路径以允许我们的Eclipse插件在JRE中找到该库?任何解决方案都必须与碰巧碰到代码的任何JRE一起工作(我认为可以假设lib/javafx-swt.jar将会存在于该JRE中)。

在我们的JDK中使用单独下载的OpenJFX版本而不是OpenJFX副本会有所帮助吗?

非常感谢☺

0 个答案:

没有答案