[英]Java 11 migration: Package is accessible from more than one module issue
我正在將 Java 8 項目遷移到 Java 11。使用的 IDE 是 Eclipse 2020-09。 我沒有模塊化項目。
對於以下進口:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
我收到編譯時錯誤消息:
The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml
我已經檢查了我的項目,並且org.w3c.dom package 不存在於第 3 方庫中或由項目 jars 中的任何傳遞依賴項添加。
但是請注意 org.w3c.dom.Document 是一個接口,我發現很少有庫實現這個接口。 這是根本原因嗎
package 可從多個模塊訪問
信息?
以下是 Eclipse 項目中 org.w3c.dom.Document 的實現者
正如您在上面的屏幕截圖中看到的,JBoss EAP 7.3 運行時庫包含org.w3c.dom.Document
的實現。 說 JBoss 運行時庫導致我遇到的這個 Java 11 遷移問題是否正確?
Java 9 引入了 JLS §7.4.3 中定義的新要求。 每個限定類型名稱都要求其前綴是唯一可見的 package。不兼容是由於先前 Java 版本中允許的傳遞依賴性。
當項目Properties,Java Compiler,“Compiler compliance level”設置為高於“1.8”時,Eclipse會報告違反此要求。 由於使用 Streaming 10.6 或更高版本時自定義 Java 實現將在 Java 11 JVM 中運行,因此必須解決這些問題。
分辨率選擇為:
在所有情況下,都需要通過了解每個庫將哪些包引入項目以及這些庫中的類的具體用途來進行一些調查以找到沖突的根源。 要查看每個庫向項目公開哪些依賴項,請使用:
mvn dependency:tree
這將提供信息以查找需要明確導入或排除的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.