本文介紹了Javafx.base讀取包javafx.Beans的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我在IntelliJ Idea中使用了OpenJDK 11和帶有Gradle的OpenJFX 11.0.1。
當我使用javafx.base模塊時,IntelliJ Idea在第1行(項目模塊聲明)報告了一個錯誤,指出我的模塊需求中沒有包括javafx.Beans模塊(Beans是在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模塊有錯誤的模塊-info.Java文件或類似的文件?這是IntelliJ IDEA錯誤嗎?
推薦答案
成功修復了該問題,這要歸功于@nullPointer的注釋。
問題是我已將文件從JavaFX SDK復制到我的JDK 11類路徑和項目庫文件夾中。
如果您看到此錯誤和相同的警告,這意味著您的IntelliJ項目JDK類路徑和您的build.gradle(或庫文件夾)中可能有重復的模塊JAR(可能直接在未來的模塊中)。
修復方法:
我從項目結構中IntelliJ Idea的JDK11類路徑中刪除了OpenJFX SDK Jars。當我從我的項目庫文件夾中刪除JFX SDK JAR時,我讀取了它們。Gradle用:
添加lib文件夾中的每個JAR
implementation fileTree(dir: 'lib', include: '**/*.jar')
此外,不要將JavaFX直接安裝到JDK文件夾中。如果不保留不必要的文件就不可能進行更新,你永遠不可能找到要刪除的所有JFX文件,如果你想刪除它,jfx src.壓縮文件會取代lib文件夾中的jdk src.壓縮文件。它們應該是分開的。
這篇關于Javafx.base讀取包javafx.Beans的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,