为了账号安全,请及时绑定邮箱和手机立即绑定

IntelliJ无法识别OpenJDK 11的JavaFX 11

IntelliJ无法识别OpenJDK 11的JavaFX 11

HUH函数 2019-07-13 14:41:40
我很难让IntellJ识别JavaFX包。对于一个新的JavaFX项目,在使用OpenJDK 11构建该项目时,IntelliJ无法识别JavaFX包。我进口了openjfx:javafx-base-11来自Maven回购公司。我看过其他问题,解决方案似乎包括检查字节码是否在正确的级别(我的是),以及项目语言是否正确(我的是正确的)。有人有什么想法吗?
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

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

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

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

JavaFX项目

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

以下是运行默认项目的简单步骤:

  1. 创建JavaFX项目
  2. 设置JDK 11(指向本地Java 11版本)
  3. 将JavaFX11SDK添加为一个库。URL可能类似于

    /Users/<user>/Downloads/javafx-sdk-11/lib/

    ..一旦您这样做,您将注意到JavaFX类现在编辑器中被识别了。
  4. 在运行默认项目之前,只需将这些添加到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类现在编辑器中被识别了。

您将注意到,Maven将为您管理所需的依赖关系:它将为javafx.Control添加javafx.base和javafx.Graphics,但最重要的是,它将添加所需的分类器基于你的平台。就我而言,麦克。

这就是为什么你的罐子org.openjfx:javafx-controls:11空空,因为有三种可能的分类器(Windows、Linux和Mac平台),它们包含所有类和本机实现。

如果您仍然希望转到.m2repo并手动从其中获取依赖项,请确保选择正确的依赖项(例如.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar)

  1. 将默认maven插件替换为这里.

  2. mvn compile exec:java它应该能起作用。

对于Gradle项目也有类似的工作,详细说明这里.

编辑

上述入门指南包含更新后的文献资料以及IntelliJ的示例项目:


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 942 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号