我在 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” for '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 错误吗?