将 JavaFX 与 Intellij IDEA 结合使用
Using JavaFX with Intellij IDEA
我严格按照教程进行操作,但似乎无法正常工作。该教程位于 JavaFX and Intellij
Non-modular from IDE
部分下:https://openjfx.io/openjfx-docs/#install-java
这是我在尝试 运行 默认 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
这对我来说意义不大,因为我可以在边栏的 lib
下看到 javafx.base
:
通往jdk-11.0.1
和javafx-sdk-11.0.1
的路径:
C:\Program Files\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
我真的不知道从这里去哪里。我严格按照教程进行操作,但它不起作用。任何帮助将不胜感激,如果您需要更多信息,请发表评论。
根据发布的命令行,这是 IntelliJ 适用于 运行 您的项目的内容:
"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml
所以在 VM 选项中,您设置了 verbatim tutorial 所说的内容:
但是您还没有为 PATH_TO_FX
应用您的真实路径,正如教程中该命令后插入的图片所建议的那样:
IntelliJ 不解析该变量并且未设置模块路径,因此您会收到预期的错误,表明未找到 JavaFX 模块:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
解决方案
这可以通过两种方式解决:
- 应用你的路径:
编辑 运行 配置,并在 VM 选项中添加您的路径:
--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml
申请,然后运行。它应该可以工作。
- 添加环境变量
您还可以设置环境变量。转到 IntelliJ->File->Settings->Appearance & Behavior->Path Variables
,并添加 PATH_TO_FX
,其中包含 lib
文件夹的路径:
然后您可以在 VM 选项中使用文字 $PATH_TO_FX$
(不适用于 Windows 上的 IntelliJ IDEA 2021.1(社区版))或 ${PATH_TO_FX}
:
--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml
申请,然后运行。
请注意,这是一个更持久的解决方案,可以应用于任何其他 JavaFX 项目。
最佳解决方案可能适用于您未指定 VM 选项 的简单情况,但有时可能会更复杂。
如果最佳解决方案不是您的情况,那么还有一件事需要检查:检查您的 项目根文件夹 是否包含 .iml您的 模块 名称的文件(检查项目结构)。
如果 .iml 丢失,那么您需要在 项目结构 中重新创建模块。
您需要在项目结构中重新创建模块,因此模块将生成 link.iml 文件。
我严格按照教程进行操作,但似乎无法正常工作。该教程位于 JavaFX and Intellij
Non-modular from IDE
部分下:https://openjfx.io/openjfx-docs/#install-java
这是我在尝试 运行 默认 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
这对我来说意义不大,因为我可以在边栏的 lib
下看到 javafx.base
:
通往jdk-11.0.1
和javafx-sdk-11.0.1
的路径:
C:\Program Files\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
我真的不知道从这里去哪里。我严格按照教程进行操作,但它不起作用。任何帮助将不胜感激,如果您需要更多信息,请发表评论。
根据发布的命令行,这是 IntelliJ 适用于 运行 您的项目的内容:
"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml
所以在 VM 选项中,您设置了 verbatim tutorial 所说的内容:
但是您还没有为 PATH_TO_FX
应用您的真实路径,正如教程中该命令后插入的图片所建议的那样:
IntelliJ 不解析该变量并且未设置模块路径,因此您会收到预期的错误,表明未找到 JavaFX 模块:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
解决方案
这可以通过两种方式解决:
- 应用你的路径:
编辑 运行 配置,并在 VM 选项中添加您的路径:
--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml
申请,然后运行。它应该可以工作。
- 添加环境变量
您还可以设置环境变量。转到 IntelliJ->File->Settings->Appearance & Behavior->Path Variables
,并添加 PATH_TO_FX
,其中包含 lib
文件夹的路径:
然后您可以在 VM 选项中使用文字 $PATH_TO_FX$
(不适用于 Windows 上的 IntelliJ IDEA 2021.1(社区版))或 ${PATH_TO_FX}
:
--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml
申请,然后运行。
请注意,这是一个更持久的解决方案,可以应用于任何其他 JavaFX 项目。
最佳解决方案可能适用于您未指定 VM 选项 的简单情况,但有时可能会更复杂。
如果最佳解决方案不是您的情况,那么还有一件事需要检查:检查您的 项目根文件夹 是否包含 .iml您的 模块 名称的文件(检查项目结构)。
如果 .iml 丢失,那么您需要在 项目结构 中重新创建模块。 您需要在项目结构中重新创建模块,因此模块将生成 link.iml 文件。