我在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模块,“javafx.base”的“模糊模块引用:javafx.base”等等 .
这是我的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的错误吗?
1 回答
由于@nullpointer的评论,管理来解决问题 .
问题是我将文件从JavaFX SDK复制到我的JDK 11类路径和项目lib文件夹 .
如果您看到此错误的相同警告意味着您可能在IntelliJ项目JDK Classpath和build.gradle(或lib文件夹)中有重复的模块jar(可能在将来的模块中) .
How to fix: 我在项目结构的IntelliJ IDEA中从JDK11 Classpath中删除了OpenJFX SDK jar . 当我从项目lib文件夹中删除JFX SDK jar时,我读了它们 . Gradle将lib文件夹中的每个jar添加到:
另外,不要将JavaFX直接安装到JDK文件夹中 . 如果不保留不必要的文件就不可能更新,你永远无法找到要删除的所有JFX文件,如果你想删除它,JFX src.zip将替换lib文件夹中的JDK src.zip . 它们意味着分开 .