JavaFX 11:"JavaFX runtime components are missing"
JavaFX 11: "JavaFX runtime components are missing"
我正在尝试 运行 在 JavaFX 11 和 Java 11,在Windows10.
下使用jGRASP 2
我已经通读了 "Getting Started with JavaFX" 指南 (https://openjfx.io/openjfx-docs/),虽然我取得了一些进步,但还是卡住了。
我已经下载了最新的 ZIP 文件,将其解压缩,并更新了 CLASSPATH 以包含编译所需的 jar 文件的路径。我可以成功编译文件。但是,当我尝试 运行 时,我收到以下错误消息:
Error: JavaFX runtime components are missing, and are required to run this application
"Getting Started" 指南说,可以通过将以下选项添加到 运行time 调用来解决此问题:
--module-path "[path]\lib" --add-modules=javafx.controls,javafx.fxml
我已经添加了选项,但我仍然收到错误消息。
以前的Whosebug文章通常以上面的选项设置结束;唉,我不知道还能做什么。
作为初次使用的用户,我设法让它工作了,但这对我来说并不简单。
我估计没有多少人熟悉这个IDE,所以我将post我遵循的步骤,作为一个基础教程:
Download 并安装 jGRASP 2.0.5_05 Beta.
因为我安装了几个JDK,默认选择JDK10.0.2,所以我的第一步是想办法用JDK 11. 这可以在 Settings -> jGrasp Startup Settings
中完成,我可以在其中设置我的 java
可执行文件的路径:
然后我重新启动了jGrasp。您可以在 Tools -> System Info -> Java Version
.
中验证 IDE 使用的是哪个 JDK
打开 HelloFX 示例 class。我从 the OpenJFX docs. The code can be found here.
中最基本的示例开始
正如预期的那样,Build -> compile
会抛出一堆错误,因为 JavaFX 不再是 JDK:
的一部分
按照 OpenJFX 文档,我们需要从 here 下载 JavaFX SDK,然后将库添加到 class 路径。转到 Settings -> PATH/CLASSPATH -> Workspace
,按新建,然后从下载的 SDK/lib 文件夹(至少 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.
这是预料之中的。根据文档,我们需要设置模块路径和添加模块参数。
- 第一次尝试:使用
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 参数应该在class 名称之前。
结论:Run arguments
不是 VM arguments
!
- 第二次尝试:为了提供 VM 参数,我找到的选项是编辑
Settings -> Compiler settings -> Workspace
。默认情况下,它使用 jdk (integrated debugger) - generic
。您可以查看它并看到 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
class,现在可以使用了!
如果您看到控制台日志,它包含您在命令行 运行 时使用的命令:
----jGRASP exec: java --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls HelloFX
----jGRASP: operation complete.
我想下一步将是运行一个更复杂的项目...
尝试简单地创建一个只有 main 方法的启动器。它可能看起来像这样:
package application;
import javafx.application.Application;
public class MyAppLauncher {
public static void main(final String[] args) {
Application.launch(MyApp.class, args);
}
}
(你的App可以暂时不用旧的main方法)
这对我有用 JDK 13 & JavaFX 13 & Eclipse 2019-12 Ubuntu.
(我使用 "new/Maven Project/Simple Project" 创建了项目,然后在 pom.xml 中添加了 JavaFX、Logging 和其他东西作为依赖项,它们都落在了类路径上。只有 JDK在模块路径上)
无需为 Java 模块而烦恼。
如果可行,您可以改天花时间学习 Java 模块化...
...并记得为这个答案投票。 :-)
我正在尝试 运行 在 JavaFX 11 和 Java 11,在Windows10.
下使用jGRASP 2我已经通读了 "Getting Started with JavaFX" 指南 (https://openjfx.io/openjfx-docs/),虽然我取得了一些进步,但还是卡住了。
我已经下载了最新的 ZIP 文件,将其解压缩,并更新了 CLASSPATH 以包含编译所需的 jar 文件的路径。我可以成功编译文件。但是,当我尝试 运行 时,我收到以下错误消息:
Error: JavaFX runtime components are missing, and are required to run this application
"Getting Started" 指南说,可以通过将以下选项添加到 运行time 调用来解决此问题:
--module-path "[path]\lib" --add-modules=javafx.controls,javafx.fxml
我已经添加了选项,但我仍然收到错误消息。
以前的Whosebug文章通常以上面的选项设置结束;唉,我不知道还能做什么。
作为初次使用的用户,我设法让它工作了,但这对我来说并不简单。
我估计没有多少人熟悉这个IDE,所以我将post我遵循的步骤,作为一个基础教程:
Download 并安装 jGRASP 2.0.5_05 Beta.
因为我安装了几个JDK,默认选择JDK10.0.2,所以我的第一步是想办法用JDK 11. 这可以在
Settings -> jGrasp Startup Settings
中完成,我可以在其中设置我的java
可执行文件的路径:
然后我重新启动了jGrasp。您可以在 Tools -> System Info -> Java Version
.
打开 HelloFX 示例 class。我从 the OpenJFX docs. The code can be found here.
中最基本的示例开始
正如预期的那样,Build -> compile
会抛出一堆错误,因为 JavaFX 不再是 JDK: 的一部分
按照 OpenJFX 文档,我们需要从 here 下载 JavaFX SDK,然后将库添加到 class 路径。转到
Settings -> PATH/CLASSPATH -> Workspace
,按新建,然后从下载的 SDK/lib 文件夹(至少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.
这是预料之中的。根据文档,我们需要设置模块路径和添加模块参数。
- 第一次尝试:使用
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 参数应该在class 名称之前。
结论:Run arguments
不是 VM arguments
!
- 第二次尝试:为了提供 VM 参数,我找到的选项是编辑
Settings -> Compiler settings -> Workspace
。默认情况下,它使用jdk (integrated debugger) - generic
。您可以查看它并看到Run
它使用:
java %S -ea %S %<FLAGS2> %<MAIN_CLASS> %<ARGS>
所以我们需要找到一种方法来设置 FLAGS2
.
ARGS
幸运的是,在 Environment
选项卡旁边,有一个 Flags/Args
选项卡,我们可以在 FLAGS2
:
--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls
- 应用,关闭对话框,然后
Build -> Run
class,现在可以使用了!
如果您看到控制台日志,它包含您在命令行 运行 时使用的命令:
----jGRASP exec: java --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls HelloFX
----jGRASP: operation complete.
我想下一步将是运行一个更复杂的项目...
尝试简单地创建一个只有 main 方法的启动器。它可能看起来像这样:
package application;
import javafx.application.Application;
public class MyAppLauncher {
public static void main(final String[] args) {
Application.launch(MyApp.class, args);
}
}
(你的App可以暂时不用旧的main方法)
这对我有用 JDK 13 & JavaFX 13 & Eclipse 2019-12 Ubuntu.
(我使用 "new/Maven Project/Simple Project" 创建了项目,然后在 pom.xml 中添加了 JavaFX、Logging 和其他东西作为依赖项,它们都落在了类路径上。只有 JDK在模块路径上)
无需为 Java 模块而烦恼。
如果可行,您可以改天花时间学习 Java 模块化...
...并记得为这个答案投票。 :-)