Intellij无法使用OpenJDK 11识别javafx 11

无法让Intellj识别javafx包。 使用新的javafx项目,使用OpenJDK 11,在尝试构建项目时,Intellij无法识别javafx包。

我从maven repo导入了openjfx:javafx-base-11

我已经看过其他问题了,解决方案的范围似乎从检查字节码是否正确(我的是),项目语言是正确的(我的是)。

有人有主意吗?

pic 1

pic 2

pic 3

编辑:

错误:

在此处输入图像描述

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

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

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

JavaFX项目

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

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

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

JavaFX 11项目

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

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

Maven的

如果您创建Maven项目,则可以轻松添加所需的依赖项:

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

       org.openjfx javafx-controls 11   org.openjfx javafx-fxml 11   

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

JavaFX 11 Maven项目

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

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

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

  1. 将默认maven插件替换为来自此处的插件。

  2. 运行mvn compile exec:java ,它应该工作。

类似的工作也适用于Gradle项目,详见此处 。