编程语言
首页 > 编程语言> > IntelliJ无法使用OpenJDK 11识别JavaFX 11

IntelliJ无法使用OpenJDK 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.请注意,还有jmods,但对于非模块化项目,SDK是首选.

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

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

JavaFX 11 Project

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

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

Maven的

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

>使用JavaFX原型创建Maven项目
>设置JDK 11(指向本地Java 11版本)
>添加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平台),它们包含所有类和本机实现.

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

>将默认maven插件替换为here中的插件.
>运行mvn compile exec:java,它应该可以工作.

类似的工作也适用于Gradle项目,详见here.

编辑

上面提到的入门指南包含更新的documentation以及IntelliJ的示例项目:

>没有Maven / Gradle的JavaFX 11,请参阅non-modular samplemodular sample项目.
>使用Maven的JavaFX 11,请参阅non-modular samplemodular sample项目.
>带有Gradle的JavaFX 11,请参阅non-modular samplemodular sample项目.

标签:java-11,java,javafx,intellij-idea,javafx-11
来源: https://codeday.me/bug/20190911/1804254.html