将 JavaFX 与 Intellij IDEA 结合使用

Posted

技术标签:

【中文标题】将 JavaFX 与 Intellij IDEA 结合使用【英文标题】:Using JavaFX with Intellij IDEA 【发布时间】:2019-04-25 09:31:28 【问题描述】:

我严格按照教程进行操作,但似乎无法使其正常工作。教程在JavaFX and IntellijNon-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.1javafx-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 can't recognize javafx 11 with OpenJDK 11的可能重复 您的%PATH_TO_FX% 打印什么?你可以从命令行运行项目吗?另请注意,文档包括IntelliJ 的教程,您检查了吗? @JoséPereda 添加了 %PATH_TO_FX% 在问题末尾设置的内容。 @JoséPereda 我可以运行他们在教程中提供的 HelloFX 示例,但是我不知道如何从命令行运行这个项目,是的,我确实按照文档中的 Intellij 教程进行操作。 本教程准确地为您提供了您必须在命令行上使用的所有命令,只需在项目的根目录下打开一个终端并运行它们? 【参考方案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 选项中,您已逐字设置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 项目。

【讨论】:

非常感谢!在我的情况下,Intellij 以某种方式在IntelliJ->File->Settings->Appearance & Behavior->Path Variables 中存储了不正确的PATH_TO_FX,它覆盖了我的系统环境变量。删除不正确的路径解决了我的问题。【参考方案2】:

最好的解决方案可能是处理一个简单的情况,即您没有指定 VM 选项,但有时它可能会更复杂。

如果最佳解决方案不是您的情况,那么还有一件事要检查:检查您的 项目根文件夹 是否包含 Module.iml 文件/strong> 名称(签入项目结构)。

如果 .iml 丢失,那么您需要在 项目结构 中重新创建模块。 您需要在项目结构中重新创建模块,因此模块将生成并链接 .iml 文件。

【讨论】:

以上是关于将 JavaFX 与 Intellij IDEA 结合使用的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX Scene Builder 拖放的 IntelliJ IDEA 插件停止工作

IntelliJ Idea 制作windows程序界面

如何在 IntelliJ IDEA 中创建 JavaFX 模块

如何使用 JavaFX 和 scenebulider 配置 IntelliJ IDEA?

IntelliJ IDEA创建JavaFX项目

如何在 IntelliJ IDEA 中创建 JavaFX Maven 项目?