簡體   English   中英

Java 11 遷移:Package 可從多個模塊問題訪問

[英]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 中運行,因此必須解決這些問題。

分辨率選擇為:

  1. 將庫升級到 Java 11 兼容版本,沒有傳遞依賴性,
  2. 在 POM dependencyManagement 中明確排除沖突,或者
  3. 通過僅導入所需的類來避免沖突,並且不要在導入語句中使用通配符 (*)。

在所有情況下,都需要通過了解每個庫將哪些包引入項目以及這些庫中的類的具體用途來進行一些調查以找到沖突的根源。 要查看每個庫向項目公開哪些依賴項,請使用:

mvn dependency:tree

這將提供信息以查找需要明確導入或排除的內容。

參考自: https://support.tibco.com/s/article/Upgrading-Streaming-projects-to-use-Java-11-package-is-accessible-from-more-than-one-module

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM