java - 将 JavaFX 与 Intellij IDEA 结合使用

原文 标签 java intellij-idea javafx javafx-11

我精确地遵循了教程,但似乎无法使其正常工作。教程在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

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

通往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 选项中,您已经逐字设置了 tutorial说:
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
解决方案
这可以通过两种方式解决:
  • 应用您的路径:

  • 编辑运行配置,并在 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 的路径文件夹:
    enter image description here
    然后你可以使用文字 $PATH_TO_FX$ (不适用于 Windows 上的 IntelliJ IDEA 2021.1(社区版)或 ${PATH_TO_FX}在 VM 选项中:
    --module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml
    
    申请,然后运行。
    请注意,这是一个更持久的解决方案,可以应用于任何其他 JavaFX 项目。

    关于java - 将 JavaFX 与 Intellij IDEA 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53435349/

    相关文章:

    java - 基于另一个类创建一个类的实例

    java - 尝试使用ADT插件安装Eclipse

    java - DatagramChannel 接收可能不会返回 SocketAddress

    debugging - 无法在 IntelliJ 中调试 Go 应用程序

    unit-testing - Corda流单元测试中各种verifySignatures函数的区别

    java - 为什么 IntelliJ IDEA (12.1.6) 无法解析 BorderFactory.createLineBorder(...)?

    java - 缺少在表格内显示数据的代码

    java - 将元素添加到 Canvas JavaFX

    java - 是否可以在JavaFx中有选择地设置TableCell内容的样式?

    java - 在 Java 中传递抽象类