我在我的项目中使用了OpenJDK 11和OpenJFX 11.0.1以及IntelliJ中的Gradle。当我使用javafx.base模块时,IntelliJ IDEA在第1行(项目模块声明)报告了一个错误,称我在模块需求中没有包括javafx.beans模块(bean是javafx.base模块中的一个包)。Gradle jar任务执行时没有任何错误或警告,因此这个错误很可能与IntelliJ的想法有关。
错误消息:“模块'hr.caellian.lunar‘为'javafx.base’和'javafx.base‘都读取'javafx.base’包”,如果我删除‘javafx.base’要求,则‘javafx.base’将被替换为下一个javafx模块。
我还收到了javafx模块需求行的警告:对于每个javafx模块,“模棱两可的模块引用: javafx.base”表示'javafx.base‘等等。
下面是我的模块-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列表-模块’不会列出任何javafx模块,尽管我认为它应该只列出jdk模块,并且OpenJFX不再包含在OpenJDK中。
我在JDK文件夹中安装了OpenJFX SDK (库文件复制到lib文件夹,法律上也是一样),手动从JDK11的lib文件夹中添加了javafx依赖文件。我还将所有jmod文件添加到JDK11的jmod文件夹中。
是否有可能JavaFX模块有坏的模块-info.java文件或类似的东西?这是IntelliJ的想法错误吗?
发布于 2018-11-10 09:18:28
成功地修复了问题,这要归功于@null指针的注释。
问题是,我将JavaFX SDK中的文件复制到了JDK11类路径和项目库文件夹中。
如果您看到这个错误带有相同的警告,这意味着您可能在IntelliJ项目JDK和您的build.gradle (或lib文件夹)中有重复的模块jars (可能直接出现在未来的模块中)。
如何修复:I从项目结构中的JDK11 Classpath中删除了OpenJFX SDK。当我从项目库文件夹中删除JFX时,我读取了它们。Gradle将lib文件夹中的每个jar添加如下:
implementation fileTree(dir: 'lib', include: '**/*.jar')另外,不要将JavaFX直接安装到JDK文件夹中。如果不保留不必要的文件,就不可能进行更新,您将永远无法找到所有要删除的JFX文件,如果您想要删除它,JFX src.zip将取代lib文件夹中的JDK src.zip。他们注定是分开的。
https://stackoverflow.com/questions/53232184
复制相似问题