Can';t将SWT与JavaFX集成在“下”;祖鲁;JDK 11

Can';t将SWT与JavaFX集成在“下”;祖鲁;JDK 11,java,eclipse,javafx,swt,java-module,Java,Eclipse,Javafx,Swt,Java Module,我们希望在RCP应用程序中的Eclipse插件中同时使用SWT和JavaFX。不幸的是,我们在Java11下集成SWT和JavaFX时遇到了问题。构建环境使用e(fx)clipse 3.5。我们正在开发Azul Systems社区版的“Zulu”JDK 11,它与Azul版本的OpenJFX捆绑在一起 以前,我们是在Java8下开发的。此时,我们的构建使用了一个编译时类路径,引用了jfxswt.jar,它位于JDK的jre/lib目录中。我们在运行时没有使用任何特殊的类路径设置 我们现在正试图转

我们希望在RCP应用程序中的Eclipse插件中同时使用SWT和JavaFX。不幸的是,我们在Java11下集成SWT和JavaFX时遇到了问题。构建环境使用e(fx)clipse 3.5。我们正在开发Azul Systems社区版的“Zulu”JDK 11,它与Azul版本的OpenJFX捆绑在一起

以前,我们是在Java8下开发的。此时,我们的构建使用了一个编译时类路径,引用了jfxswt.jar,它位于JDK的
jre/lib
目录中。我们在运行时没有使用任何特殊的类路径设置

我们现在正试图转向Java11。在那里,这个JAR变成了
javafxswt.JAR
,并位于JDK的
lib
目录中。在编译时设置类路径来引用这个JAR似乎已经不够了:似乎也有必要在运行时这样做。如果我们不这样做,就会得到一个错误(
java.lang.NoClassDefFoundError:javafx/embed/swt/FXCanvas

作为测试,我们在实现Eclipse插件的jar中实验性地嵌入了
javafx swt.jar
。然后我们在插件的
.classpath
文件中引用了它,代码按预期工作。不幸的是,由于法律和其他原因,我们不能以这种方式嵌入JAR

关于Java模块的一个注意事项是:
javafx.swt
在发出
--list module
命令时,不会显示在输出中。我们尝试使用参数
-p/path/to/JDK/lib/javafx-swt.jar运行应用程序——添加模块javafx.swt
,但这似乎并不能解决问题

我的问题:有没有办法设置类或模块路径,让我们的Eclipse插件在JRE中找到这个库?任何解决方案都必须与代码运行所针对的任何JRE一起工作(我认为可以假设
lib/javafx swt.jar
将存在于该JRE中)

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


非常感谢☺

不确定它是否重要,但显然
javafx.swt
是一个自动模块(即没有
module info
文件)。您做了一些非常错误的事情。JavaFX是Java8中JavaSE的一部分,因此您不应该向类路径添加任何.jar文件。模块路径中的条目应该是包含模块的目录,而不是单个的.jar文件,例如
-p/opt/javafx/lib
。即使您引用的是.jar文件,您也应该引用实际的公共模块,比如javafx.controls.jar,而不是javafx-swt.jar。不确定这是否重要,但显然
javafx.swt
是一个自动模块(即没有
模块信息
文件)。您做了一些非常错误的事情。JavaFX是Java8中JavaSE的一部分,因此您不应该向类路径添加任何.jar文件。模块路径中的条目应该是包含模块的目录,而不是单个的.jar文件,例如
-p/opt/javafx/lib
。即使您引用的是.jar文件,也应该引用实际的公共模块,比如javafx.controls.jar,而不是javafx-swt.jar。