java - IntelliJ 无法使用 OpenJDK 11 识别 JavaFX 11

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

我无法让 IntellJ 识别 JavaFX 包。对于使用 OpenJDK 11 的新 JavaFX 项目,在尝试构建项目时,IntelliJ 无法识别 JavaFX 包。

我已经从 Maven 存储库中导入了 openjfx:javafx-base-11

我查看了其他问题,解决方案似乎包括检查字节码是否处于正确级别(我的是)以及项目语言是否正确(我的是)。

有人有什么想法吗?

pic 1

pic 2

pic 3

编辑:

错误:

enter image description here

最佳答案

如评论中所述,Starting Guide是从 Java 11 和 JavaFX 11 开始的地方。

像 Java 11 之前那样工作的关键是理解:

  • JavaFX 11 不再是 JDK 的一部分
  • 您可以获得不同版本的它,可以是 SDK 也可以是 常规依赖项 (maven/gradle)。
  • 即使您的项目不是模块化的,您也需要将其包含到项目的模块路径中。

JavaFX 项目

如果您在 IntelliJ 中创建常规 JavaFX 默认项目(没有 Maven 或 Gradle),我建议您从 here 下载 SDK。 .请注意,也有 jmod,但对于非模块化项目,首选 SDK。

这些是运行默认项目的简单步骤:

  1. 创建 JavaFX 项目
  2. 设置 JDK 11(指向您本地的 Java 11 版本)
  3. 将 JavaFX 11 SDK 添加为库。 URL 可能类似于 /Users/<user>/Downloads/javafx-sdk-11/lib/ .执行此操作后,您会注意到 JavaFX 类现在可在编辑器中识别。

JavaFX 11 Project

  1. 在运行默认项目之前,您只需将这些添加到 VM 选项中:

    --module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

  2. 运行

行家

如果您使用 Maven 构建您的项目,请按照以下步骤操作:

  1. 使用 JavaFX 原型(prototype)创建 Maven 项目
  2. 设置 JDK 11(指向您本地的 Java 11 版本)
  3. 添加 JavaFX 11 依赖项。

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>
    

执行此操作后,您会注意到 JavaFX 类现在可在编辑器中识别。

JavaFX 11 Maven project

您会注意到 Maven 为您管理所需的依赖项:它会为 javafx.controls 添加 javafx.base 和 javafx.graphics,但最重要的是,它会根据您的需求添加所需的分类器平台。就我而言,Mac。

这就是为什么你的 jar org.openjfx:javafx-controls:11,因为存在三种可能的分类器(windows、linux 和 mac 平台),它们包含所有类和 native 实现。

如果您仍然想转到您的 .m2 存储库并从那里手动获取依赖项,请确保您选择了正确的(例如 .m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar)

  1. here 中的插件替换默认的 maven 插件.

  2. 运行 mvn compile javafx:run ,它应该可以工作。

Gradle 项目也有类似的工作方式,详细说明here .

编辑

提到的入门指南包含更新的 documentation和 IntelliJ 的示例项目:

关于java - IntelliJ 无法使用 OpenJDK 11 识别 JavaFX 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55062852/

相关文章:

c# - C# 中的 Culture 是否等同于 Java 中的 Locale?

java - 即使在添加用户权限后我也收到 mailjava.io.FileNotFoundException

java - 斯坦福标注器不工作

debugging - 无法在带有 glassfish 服务器的 ubuntu 上使用 intelliJ 在 Debug模式下运行 Web 应用程序

java - 随机无法识别 Maven 依赖项

java - 寻找 GCD,Java 套接字编程

java - IntelliJ 警告 : Unchecked generics array creation for varargs parameter

java - 如何在javaFX中设置和获取私有(private)变量?

java - 如何创建弹出消息来提醒用户字段不完整?

javafx - 每个声明都需要 @FXML 吗?