我正在尝试在 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
可执行文件的路径:
然后我重新启动了 jGrasp。您可以在 Tools -> System Info -> Java Version
中验证 IDE 使用的是哪个 JDK。
打开 HelloFX 示例类。我从 the OpenJFX docs 中最基本的示例开始.可以找到代码here .
Build -> compile
,正如预期的那样,将抛出一堆错误,因为 JavaFX 不再是 JDK 的一部分:
按照 OpenJFX 文档,我们需要从 here 下载 JavaFX SDK。 ,然后将库添加到类路径。转到
Settings -> PATH/CLASSPATH -> Workspace
,按 New,然后从下载的 SDK/lib 文件夹(至少javafx-base.jar)中一个接一个地添加不同的 JavaFX jar。 jar
、javafx-graphics.jar
和javafx-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
- 应用,关闭对话框,
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/