如何在IntelliJ IDEA中使用JavaFX和Java 11

How to get JavaFX and Java 11 working in IntelliJ IDEA

本问题已经有最佳答案,请猛点这里访问。

在最近的Java 11版本中,JavaFX不再包含在JDK中。 我有一个现有的JavaFX项目。 我有兴趣学习如何将其从Java 10项目更改为Java11。我确定我已正确安装了Java 11,并且能够将默认的SDK从Java 10更改为Java 11。 我知道如何使JavaFX与Java 11协同工作。

我在这里下载了最新的JavaFX版本。 我已经将其提取到包含其他JDK的Java文件夹中,但是我现在真的不知道该怎么办。 我读了一些冗长的指南,描述了如何使用Maven或Gradle连接项目,但是我从未使用过。 有没有办法在IntelliJ菜单中添加JavaFX支持?


下载适合您的操作系统的JavaFX SDK,并将其解压缩到所需的位置,例如/ Users / your-user / Downloads / javafx-sdk-11。

  • 创建一个JavaFX项目
  • enter image description here

    创建一个JavaFX项目为该项目提供一个名称,例如HelloFX,并提供一个位置。当项目打开时,无法识别JavaFX类。
    enter image description here

  • 设置JDK 11
  • 转到文件->项目结构->项目,并将项目SDK设置为11。您还可以将语言级别设置为11。设置JDK 11
    enter image description here

  • 创建一个图书馆
  • 转到文件->项目结构->库,然后将JavaFX 11 SDK作为库添加到项目中。指向JavaFX SDK的lib文件夹。
    enter image description here

    应用该库后,IDE将识别JavaFX类。
    enter image description here

    警告:如果现在运行该项目,它将编译,但会出现此错误:

    Error: JavaFX runtime components are missing, and are required to run
    this application

    由于Java 11启动器检查主类是否扩展了javafx.application.Application,因此显示了此错误。如果是这种情况,则需要在模块路径上具有javafx.graphics模块。

  • 添加虚拟机选项
  • 要解决此问题,请单击运行->编辑配置...,然后添加以下VM选项:

    --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml

    请注意,由IntelliJ创建的默认项目使用FXML,因此javafx.fxml和javafx.controls一起是必需的。如果您的项目使用其他模块,则还需要添加它们。
    enter image description here
    单击应用并关闭对话框。

  • 运行项目
  • 单击运行->运行...以运行项目,现在它可以正常运行了。


    您可以从https://www.azul.com/downloads/zulu/zulufx/下载包含JavaFX的Java版本。在这种情况下,无需进行特殊设置即可在Java 11上运行JavaFx应用程序。JavaFX的运行方式与Java 8相同。