JavaFX 11:“缺少JavaFX运行时组件”

我正在尝试在Windows 10下使用jGRASP 2在JavaFX 11和Java 11下运行示例JavaFX代码(取自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文章通常以上面的选项设置结尾; las,我不知道该怎么办.

最佳答案

作为初次使用的用户,我设法使它起作用,但是对我而言,这并不是一件容易的事.

 

我想并没有多少人熟悉此IDE,因此我将按照基本步骤发布我遵循的步骤:

> Download并安装jGRASP版本2.0.5_05 Beta.
>因为我已经安装了一些JDK,所以默认情况下选择了JDK 10.0.2,所以我的第一步是找到一种使用JDK 11的方法.可以在Settings-> jGrasp启动设置,可以在其中设置Java可执行文件的路径:

 

然后,我重新启动了jGrasp.您可以在工具->中验证IDE使用的是哪个JDK.系统信息-> Java版本.

>打开HelloFX示例类.我从the OpenJFX docs开始最基本的示例.可以找到代码here.
>构建->鉴于JavaFX不再是JDK的一部分,按预期进行编译会引发很多错误:

 

>按照OpenJFX文档,我们需要从here下载JavaFX SDK,然后将库添加到类路径.转到设置->路径/类路径->在工作区中,按“新建”,然后从下载的SDK / lib文件夹(至少javafx-base.jar,javafx-graphics.jar和javafx-controls.jar)中逐一添加不同的JavaFX jar.
>构建->编译现在应该可以工作了.
>下一步:构建->跑.这将失败:

----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参数.

>首次尝试:使用运行参数.设置后:

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

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

 

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

怎么了!!好吧…如果您在命令行上尝试该操作,它也会失败,因为参数的顺序错误,因此vm参数应该放在类名之前.

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

>第二次尝试:为了提供VM参数,我发现的选项是编辑设置->编译器设置->工作区.默认情况下,它使用的是通用的jdk(集成调试器).您可以查看它,并看到它在运行中使用:

java %S -ea %S % % %

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

幸运的是,在“环境”选项卡旁边,有一个“标志/ Args”选项卡,我们可以在FLAGS2中设置vm参数:

 

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

 

>应用,关闭对话框,然后Build->运行课程,现在可以使用了!

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

 

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

 ----jGRASP: operation complete.

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

你可能感兴趣的:(JavaFX 11:“缺少JavaFX运行时组件”)