首页 > 解决方案 > JavaFX 11:“缺少 JavaFX 运行时组件”

问题描述

我正在尝试使用 Windows 10 下的 jGRASP 2 在 JavaFX 11 和 Java 11 下运行示例 JavaFX 代码(取自 Java Illuminated 的第 5 版)。

我已经广泛阅读了“JavaFX 入门”指南 ( https://openjfx.io/openjfx-docs/ ),虽然我取得了一些进展,但我还是被卡住了。

我已经下载了最新的 ZIP 文件,将其解压缩,并更新了 CLASSPATH 以包含编译所需的 jar 文件的路径。我可以成功编译该文件。但是,当我尝试运行时,我收到以下错误消息:

错误:缺少 JavaFX 运行时组件,需要运行此应用程序

“入门”指南说,可以通过在运行时调用中添加以下选项来解决此问题:

--module-path "[path]\lib" --add-modules=javafx.controls,javafx.fxml

我已经添加了选项,但我仍然收到错误消息。

以前的 StackOverflow 文章通常以上面的选项设置结束;唉,我不知道还能做什么。

标签: javajavafxjgraspjavafx-11

解决方案


作为第一次使用的用户,我设法让它工作,但这对我来说并不简单。

我想没有多少人熟悉这个IDE,所以我将发布我遵循的步骤,作为一个基本教程:

  • 下载并安装 jGRASP 版本 2.0.5_05 Beta。

  • 由于我安装了一些 JDK,它默认选择 JDK 10.0.2,所以我的第一步是找到一种使用 JDK 11 的方法。这可以在 中完成Settings -> jGrasp Startup Settings,我可以在其中设置java可执行文件的路径:

设置JDK 11

然后我重新启动了jGrasp。您可以验证 IDE 使用的是哪个 JDK Tools -> System Info -> Java Version

  • 打开 HelloFX 示例类。我从OpenJFX 文档中最基本的示例开始。代码可以在这里找到。

  • Build -> compile,正如预期的那样,鉴于 JavaFX 不再是 JDK 的一部分,将会引发一堆错误:

编译失败

  • 按照 OpenJFX 文档,我们需要从这里下载 JavaFX SDK ,然后将库添加到类路径中。转到Settings -> PATH/CLASSPATH -> Workspace,按新建,然后从下载的 SDK/lib 文件夹(至少javafx-base.jarjavafx-graphics.jarjavafx-controls.jar)中一一添加不同的 JavaFX jar。

  • Build -> compile现在应该可以工作了。

  • 下一步:Build -> Run. 这失败了:

----jGRASP exec: java HelloFX
Error: JavaFX runtime components are missing, and are required to run this application

 ----jGRASP wedge: exit code for process is 1.
 ----jGRASP: operation complete.

这是意料之中的。根据文档,我们需要设置 module-path 和 add-modules 参数。

  • 第一次尝试:使用Run arguments. 设置后:
--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

再次运行失败并显示与上述完全相同的错误消息,但控制台日志中有一个不同之处:

----jGRASP exec: java HelloFX --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

这有什么问题!?嗯......如果你在命令行上尝试,它也会失败,因为参数的顺序是错误的,vm参数应该放在类名之前。

结论:Run arguments不是VM arguments

  • 第二次尝试:为了提供 VM 参数,我发现的选项是编辑Settings -> Compiler settings -> Workspace. 默认情况下,它使用jdk (integrated debugger) - generic. 您可以查看它并查看Run它的用途:
java %S -ea %S %<FLAGS2> %<MAIN_CLASS> %<ARGS>

因此,ARGS我们需要找到一种方法来设置FLAGS2.

幸运的是,在选项卡旁边Environment有一个Flags/Args选项卡,我们可以在其中设置我们的 vm 参数FLAGS2

--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

虚拟机参数

  • 应用,关闭对话框,然后Build -> Run类,现在它可以工作了!

如果您看到控制台日志,它包含您在命令行上运行时将使用的命令:

----jGRASP exec: java --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls HelloFX

 ----jGRASP: operation complete.

我想下一步将运行一个更复杂的项目......


推荐阅读