将 JavaFX 与 Intellij IDEA 一起使用

2022-09-02 20:40:25

我已经精确地遵循了一个教程,但我似乎无法让它工作。本教程位于以下部分下:https://openjfx.io/openjfx-docs/#install-javaJavaFX and IntellijNon-modular from IDE

以下是我在尝试运行默认的 Intellij Idea JavaFX 项目时收到的错误消息:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found

Process finished with exit code 1

这对我来说没什么意义,因为我可以在侧边栏下面看到:javafx.baselibenter image description here

通往 和 的路径:jdk-11.0.1javafx-sdk-11.0.1

C:\程序文件\Java

安装了 Java:

C:\Users\jonat>java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

JAVA_HOME变量(在指南中提到)被设置:

C:\Users\jonat>echo %JAVA_HOME%
C:\Program Files\Java\jdk-11.0.1

PATH_TO_FX变量已设置:

C:\Users\jonat>echo %PATH_TO_FX%
C:\Program Files\Java\javafx-sdk-11.0.1\lib

我真的不知道该何去何从。我已经精确地遵循了本教程,但它不起作用。任何帮助将不胜感激,如果您需要更多信息,请留下有关它的评论。


答案 1

根据发布的命令行,这是IntelliJ应用于运行项目的内容:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml

因此,在 VM 选项中,您已经逐字设置了本教程的内容:

enter image description here

但是,您尚未应用 的实际路径,如本教程中该命令后面插入的图片所示:PATH_TO_FX

enter image description here

IntelliJ 无法解析该变量,并且未设置模块路径,因此您会收到预期的错误,显示找不到 JavaFX 模块:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

溶液

这可以通过两种方式解决:

  1. 应用您的路径:

编辑运行配置,然后在 VM 选项中添加路径:

--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml

应用并运行。它应该有效。

  1. 添加环境变量

您还可以设置环境变量。转到 ,然后添加 ,并添加文件夹的路径:IntelliJ->File->Settings->Appearance & Behavior->Path VariablesPATH_TO_FXlib

enter image description here

然后,您可以使用文本(不适用于Windows上的IntelliJ IDEA 2021.1(社区版))或在VM选项中:$PATH_TO_FX$${PATH_TO_FX}

--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml

应用并运行。

请注意,这是一个更永久的解决方案,可以应用于任何其他 JavaFX 项目。


答案 2

最佳解决方案可能适用于一种简单情况,即未指定 VM 选项,但有时可能更复杂。

如果顶级解决方案不是您的情况,那么还有另一件事要检查:检查您的项目根文件夹是否包含模块名称的.iml文件(签入项目结构)。

如果缺少 .iml,则需要在项目结构中重新创建模块。您需要在项目结构中重新创建模块,以便模块将生成并链接 .iml 文件。


推荐