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

问题描述 投票:2回答:1

我正在尝试使用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文章通常以上面的选项设置结束;唉,我无法弄清楚还有什么可做的。

java javafx jgrasp javafx-11
1个回答
2
投票

作为第一次使用者,我设法让它成功,但对我来说并不简单。

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

  • Download并安装jGRASP版本2.0.5_05 Beta。
  • 由于我安装了一些JDK,它默认选择JDK 10.0.2,所以我的第一步是找到一种方法来使用JDK 11.这可以在Settings -> jGrasp Startup Settings中完成,我可以在其中设置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 jar(至少javafx-base.jarjavafx-graphics.jarjavafx-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

  • 第二次尝试:为了提供VM参数,我找到的选项是编辑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

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.

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

© www.soinside.com 2019 - 2024. All rights reserved.