我试图在JavaFX 11和Java11下运行示例JavaFX代码(摘自第5版Java )和Java11,在Windows 10下使用jGRASP 2。
我已经广泛阅读了“开始使用JavaFX”指南(https://openjfx.io/openjfx-docs/),虽然我已经取得了一些进展,但我还是被困住了。
我下载了最新的ZIP文件,解压缩了它,并更新了CLASSPATH,以包含编译所需的jar文件的路径。我可以成功地编译这个文件。但是,当我尝试运行时,会收到以下错误消息:
错误:缺少JavaFX运行时组件,需要运行此应用程序
“入门”指南说,可以通过在运行时调用中添加以下选项来解决这一问题:
-模块-路径"path\lib“--add=javafx.Controls,javafx.fxml
我添加了选项,但仍然收到错误消息。
以前的StackOverflow文章通常以上面的选项设置结束;唉,我不知道还能做什么。
发布于 2019-02-13 18:48:29
作为第一次用户,我设法使它工作,但这不是简单的我。
我想熟悉这个IDE的人不多,所以我将发布我遵循的步骤,作为基本教程:
Settings -> jGrasp Startup Settings中完成,在这里我可以为我的java可执行文件设置路径:

然后我重新启动了jGrasp。您可以验证IDE在Tools -> System Info -> Java Version中使用的JDK。

Settings -> PATH/CLASSPATH -> Workspace,按New,然后逐个添加下载的SDK/lib文件夹中的不同JavaFX jars (至少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参数应该放在类名之前。
总之: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.我想下一步是运行一个更复杂的项目..。
发布于 2019-12-28 13:39:38
尝试简单地创建一个仅使用主方法的启动程序。它可能看起来像这样:
package application;
import javafx.application.Application;
public class MyAppLauncher {
public static void main(final String[] args) {
Application.launch(MyApp.class, args);
}
}(您可以暂时在应用程序中保留旧的主方法未使用)
这对我适用于JDK 13 & JavaFX 13 &Eclipse2019-12在Ubuntu下。
(我使用"new/Maven Project/Simple“创建了这个项目,然后在pom.xml中添加了JavaFX、日志和其他东西作为依赖项,所有这些都落在了Classpath上。只有JDK在模块路径上)
不需要为Java模块操心。
如果这有效的话,您可以花些时间了解Java模块化。
...and记得投票支持这个答案。:-)
https://stackoverflow.com/questions/54662129
复制相似问题