【发布时间】:2019-04-13 09:42:26
【问题描述】:
我在 IntelliJ IDEA 中将 OpenJDK 11 和 OpenJFX 11.0.1 与 Gradle 一起用于我的项目。 当我使用 javafx.base 模块时,IntelliJ IDEA 在第 1 行(项目模块声明)报告错误,说我的模块要求中没有包含 javafx.beans 模块(bean 是 javafx.base 模块中的一个包)。 Gradle jar 任务执行时没有任何错误或警告,因此此错误可能与 IntelliJ IDEA 有关。
错误消息:“模块 'hr.caellian.lunar' 读取 'javafx.base' 和 'javafx.base' 的包 'javafx.beans'” 如果我删除 'javafx.base' 要求,则上述错误中的 'javafx.base' 将替换为下一个 javafx 模块。
我还在 javafx 模块要求行中收到警告:“不明确的模块参考:javafx.base”对于 'javafx.base' 等等每个 javafx 模块。
这是我的 module-info.java 文件:
module hr.caellian.lunar {
requires java.base;
requires kotlin.stdlib;
requires javafx.base;
requires javafx.controls;
requires javafx.fxml;
opens hr.caellian.lunar.gui to javafx.graphics;
requires org.kordamp.ikonli.javafx;
requires org.kordamp.iconli.core;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.databind;
requires com.fasterxml.jackson.dataformat.yaml;
requires arglib;
requires org.apache.bcel;
}
我在网上找了至少半个小时的解决方案。我发现的只是一个网站,说只有我已经包含的模块是 JFX 所必需的(我认为这是 JavaFX 9)。
我重新下载了 JavaFX 模块以查看我是否错过了复制某些内容,但我没有 - javafx.beans 模块不存在。
如果有问题,'java --list-modules' 不会列出任何 javafx 模块,尽管我认为它应该只列出 jdk 模块并且 OpenJFX 不再包含在 OpenJDK 中。
我将 OpenJFX SDK 安装到 JDK 文件夹中(将 lib 文件复制到 lib 文件夹,合法相同),在 IDEA 中手动添加了来自 JDK11 的 lib 文件夹的 javafx jar 依赖文件。我还将所有 jmod 文件添加到 JDK11 的 jmod 文件夹中。
JavaFX 模块是否可能有错误的 module-info.java 文件或类似的文件?这是 IntelliJ IDEA 错误吗?
【问题讨论】:
-
您能否复制并粘贴您收到的确切错误消息?
-
您使用的是 Maven 还是 Gradle?否则,您如何为 IntelliJ 设置 JavaFX SDK?你设置
module-path了吗? -
@JacobG。添加到问题中。
-
@JoséPereda Gradle,将 JFX SDK 安装到 JDK 文件夹中,将 jars 手动添加到 IntelliJ 的 JDK11。我还没有在 gradle 中设置模块路径,不确定是否需要,但这与问题无关,因为 IntelliJ 给出了这个错误,而不是 gradle,gradle jar 任务正确执行而没有错误。
-
@TinSvagelj 我猜,您最终在 JavaFX 的模块路径中放置了两次相同的模块。从段落 I installed OpenJFX SDK into JDK folder... 和错误 Ambiguous module reference:.... 推断这一点
标签: java javafx java-module java-11 openjfx