java - 结合使用JavaFX和Intellij IDEA

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

我已经完全按照教程进行了操作,但似乎无法正常工作。本教程位于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

这对我来说毫无意义,因为我可以在侧边栏的javafx.base下看到lib:
enter image description here

通往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用于运行项目的内容:

"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

    然后,您可以在VM选项中使用文字$PATH_TO_FX$${PATH_TO_FX}:
    --module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml
    

    应用并运行。

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

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

    相关文章:

    java - 使用 gradle 6.3、OpenJDK 14 和 OpenJFX 14 部署 JavaFX 应用程序

    java - 使监听器等待javafx

    java - 多线程 - 为什么以下程序的行为如此奇怪?

    java - 1个输入中断3个变量

    java - 如何实现用织物数字查找 friend ?

    java - 导入org.junit.jupiter无法解析

    intellij-idea - 网络 Storm : How to import multiple project in same window in WebStorm

    java - 如何在Spring中设置Oracle加密属性?

    intellij-idea - 如何使用 intellij 在 docker 容器中进行开发?

    java - setOnMouseEntered不适用于ListView中的ImageView