如何让 JavaFX 和 Java11 在 IntelliJ IDEA 中工作

How to get JavaFX and Java 11 working in IntelliJ IDEA

在最近的 Java 11 版本中,JavaFX 不再包含在 JDK 中。我有一个现有的 JavaFX 项目。我有兴趣学习如何将它从 Java 10 项目更改为 Java 11。我确信我已经正确安装了 Java 11,并且我能够更改默认 SDK从 Java 10 到 Java 11。我不知道如何让 JavaFX 与 Java 11.

一起工作

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

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

  1. 创建一个 JavaFX 项目

创建一个 JavaFX 项目为项目提供一个名称,例如 HelloFX,以及一个位置。当项目打开时,无法识别 JavaFX classes。

  1. 设置JDK11

进入文件->项目结构->项目,将项目SDK设置为11,也可以将语言级别设置为11。设置JDK11

  1. 创建库

转到文件 -> 项目结构 -> 库并将 JavaFX 11 SDK 作为库添加到项目中。指向 JavaFX SDK 的 lib 文件夹。

应用库后,JavaFX classes 将被 IDE 识别。

警告:如果您 运行 现在项目将编译,但您将收到此错误:

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

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

  1. 添加虚拟机选项

要解决此问题,请单击 运行 -> 编辑配置...并添加以下 VM 选项:

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

请注意,IntelliJ 创建的默认项目使用 FXML,因此需要 javafx.fxml 和 javafx.controls。如果您的项目使用其他模块,您也需要添加它们。 单击应用并关闭对话框。

  1. 运行 项目

单击 运行 -> 运行... 到 运行 项目,现在应该可以正常工作了。

详细资源: https://www.jetbrains.com/help/idea/javafx.html

您可以从 Azul 下载包含 JavaFX 的 java 版本。参见:Download Azul Zulu Builds of OpenJDK。 在这种情况下,运行 JavaFx 应用程序在 Java 11 上没有特殊设置 - 它是 built-in,就像在 Java 8.[=12= 中一样]

您还可以从 Bellsoft 的 JDK 和 JRE 分发站点下载这些 'full' 版本:Download Liberica JDK