首页 文章

javafx.base读取包javafx.beans

提问于
浏览
0

我在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 回答

  • 0

    由于@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添加到:

    implementation fileTree(dir: 'lib', include: '**/*.jar')
    

    另外,不要将JavaFX直接安装到JDK文件夹中 . 如果不保留不必要的文件就不可能更新,你永远无法找到要删除的所有JFX文件,如果你想删除它,JFX src.zip将替换lib文件夹中的JDK src.zip . 它们意味着分开 .

相关问题