JavaFX 11 : "JavaFX runtime components are missing"

标签 java javafx jgrasp javafx-11

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

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

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

Error: JavaFX runtime components are missing, and are required to run this application

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

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

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

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

最佳答案

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

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

  • Download并安装 jGRASP 版本 2.0.5_05 Beta。

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

SetJDK 11

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

  • 打开 HelloFX 示例类。我从 the OpenJFX docs 中最基本的示例开始.可以找到代码here .

  • Build -> compile,正如预期的那样,将抛出一堆错误,因为 JavaFX 不再是 JDK 的一部分:

Compile fails

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

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

  • 下一步:构建 -> 运行。这失败了:

----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 /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 参数应该在类名之前

结论:运行参数不是VM参数!

  • 第二次尝试:为了提供 VM 参数,我找到的选项是编辑 Settings -> Compiler settings -> Workspace。默认情况下,它使用 jdk(集成调试器)- 通用。您可以查看它并看到它使用的 Run:
java %S -ea %S %<FLAGS2> %<MAIN_CLASS> %<ARGS>

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

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

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

VM args

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

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

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

 ----jGRASP: operation complete.

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

关于JavaFX 11 : "JavaFX runtime components are missing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54662129/

相关文章:

java - 水平对齐 GWT VerticalPanel

Java获取资源时流总是返回null

java - 检测双击 TableView JavaFX 的单元格

java - Java错误: cannot find symbol

java - 了解@Nonnull和@CheckForNull注释

java - 安装 Talend Data Integration Studio 时 Java JRE 和 Eclipse 出现问题

java - 将 JavaFX Pane 动态加载为插件

java - 如何从 javafx 中的另一个窗口显示图像?

java - 使我的变量可以接受我的打印语句

基于Java,我找不到代码中出错的地方