我无法让 IntellJ 识别 JavaFX 包。对于使用 OpenJDK 11 的新 JavaFX 项目,在尝试构建项目时,IntelliJ 无法识别 JavaFX 包。
我已经从 Maven 存储库中导入了 openjfx:javafx-base-11
。
我查看了其他问题,解决方案似乎包括检查字节码是否处于正确级别(我的是)以及项目语言是否正确(我的是)。
有人有什么想法吗?
编辑:
错误:
最佳答案
如评论中所述,Starting Guide是从 Java 11 和 JavaFX 11 开始的地方。
像 Java 11 之前那样工作的关键是理解:
- JavaFX 11 不再是 JDK 的一部分
- 您可以获得不同版本的它,可以是 SDK 也可以是 常规依赖项 (maven/gradle)。
- 即使您的项目不是模块化的,您也需要将其包含到项目的模块路径中。
JavaFX 项目
如果您在 IntelliJ 中创建常规 JavaFX 默认项目(没有 Maven 或 Gradle),我建议您从 here 下载 SDK。 .请注意,也有 jmod,但对于非模块化项目,首选 SDK。
这些是运行默认项目的简单步骤:
- 创建 JavaFX 项目
- 设置 JDK 11(指向您本地的 Java 11 版本)
- 将 JavaFX 11 SDK 添加为库。 URL 可能类似于
/Users/<user>/Downloads/javafx-sdk-11/lib/
.执行此操作后,您会注意到 JavaFX 类现在可在编辑器中识别。
在运行默认项目之前,您只需将这些添加到 VM 选项中:
--module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml
运行
行家
如果您使用 Maven 构建您的项目,请按照以下步骤操作:
- 使用 JavaFX 原型(prototype)创建 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 类现在可在编辑器中识别。
您会注意到 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
)
用 here 中的插件替换默认的 maven 插件.
运行
mvn compile javafx:run
,它应该可以工作。
Gradle 项目也有类似的工作方式,详细说明here .
编辑
提到的入门指南包含更新的 documentation和 IntelliJ 的示例项目:
没有 Maven/Gradle 的 JavaFX 11,参见 non-modular sample或 modular sample项目。
JavaFX 11 与 Maven,参见 non-modular sample或 modular sample项目。
JavaFX 11 与 Gradle,参见 non-modular sample或 modular sample项目。
关于java - IntelliJ 无法使用 OpenJDK 11 识别 JavaFX 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55062852/