我正在尝试使用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文章通常以上面的选项设置结束;唉,我无法弄清楚还有什么可做的。
作为第一次使用者,我设法让它成功,但对我来说并不简单。
我想没有多少人熟悉这个IDE,所以我将发布我遵循的步骤作为基本教程:
Settings -> jGrasp Startup Settings
中完成,我可以在其中设置java
可执行文件的路径:然后我重新启动了jGrasp。您可以在Tools -> System Info -> Java Version
中验证IDE使用的JDK。
Build -> compile
将抛出一堆错误,因为JavaFX不再是JDK的一部分:Settings -> PATH/CLASSPATH -> Workspace
,按New,然后逐个添加下载的SDK / lib文件夹中的不同JavaFX jar(至少javafx-base.jar
,javafx-graphics.jar
和javafx-controls.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
!
Settings -> Compiler settings -> Workspace
。默认情况下,它使用jdk (integrated debugger) - generic
。您可以查看它并查看它使用的Run
:java %S -ea %S %<FLAGS2> %<MAIN_CLASS> %<ARGS>
因此,我们需要找到一种方法来设置ARGS
,而不是FLAGS2
。
幸运的是,在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.
我想下一步将是运行一个更复杂的项目......