IntelliJ 无法使用 OpenJDK 11 识别 JavaFX 11

新手上路,请多包涵

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

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

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

有人有想法么?

图 1

图二

图 3

编辑:

错误:

在此处输入图像描述

原文由 AlwaysNeedingHelp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 931
2 个回答

正如评论中提到的, 入门指南 是从 Java 11 和 JavaFX 11 开始的地方。

像您在 Java 11 之前所做的那样工作的关键是要了解:

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

JavaFX 项目

如果您在 IntelliJ(没有 Maven 或 Gradle)中创建常规 JavaFX 默认项目,我建议您从 此处 下载 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 项目

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

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

马文

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

  1. 使用 JavaFX 原型创建 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 项目

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

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

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

  1. 这里 的那些替换默认的 Maven 插件。

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

Gradle 项目也有类似的工作,如在 此处 详细解释的那样。

编辑

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

原文由 José Pereda 发布,翻译遵循 CC BY-SA 4.0 许可协议

JavaFX 不再是 JDK 11 的一部分的问题。以下解决方案使用 IntelliJ(尚未尝试使用 NetBeans):

  1. 添加 JavaFX 全局库作为依赖项:

设置 -> 项目结构 -> 模块。在模块中,转到 Dependencies 选项卡,然后单击添加“+”符号 -> Library -> Java-> 从列表中选择 JavaFX,然后单击 Add Selected,然后单击 Apply settings。

  1. 右键单击 JavaFX 项目中的源文件 (src),然后创建一个新的 module-info.java 文件。在文件中写入以下代码:
    module YourProjectName {
       requires javafx.fxml;
       requires javafx.controls;
       requires javafx.graphics;
       opens sample;
   }

这 2 个步骤将解决您使用 JavaFX 的所有问题,我向您保证。

参考:The Learn Programming 频道制作了一个 You Tube 教程,将在短短 5 分钟内解释上述所有细节。我还建议观看它来解决您的问题: https ://www.youtube.com/watch?v=WtOgoomDewo

原文由 Coder992 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题