簡體   English   中英

JDK 10 無法在 Eclipse 中導入 javax.xml.namespace

[英]JDK 10 cannot import javax.xml.namespace in Eclipse

這很奇怪。 我正在將一個動態 Web 項目從 Java 8 遷移到 Java 10。

我無法解決依賴項的最后一件事是 javax.xml.namespace.QName 類。

您可以在附加的屏幕截圖中看到,JRE 系統庫中存在 QName 類,但 IDE 一直抱怨 QName 無法解析為類型。 截屏

可能存在從其他依賴項中提取的重復依賴項。

在日食中做

  1. “導航 ->打開類型...
  2. 輸入“java.xml.namespace”。
  3. 如果您的 (Open-)JDK 之外還有其他結果,則需要在以下步驟中將其刪除。 就我而言,它是 xml-apis
  4. 在 eclipse 中打開你的pom.xml ,並訪問“ Dependency Hierarchy ”選項卡來檢查哪個依賴被引入 xml-apis
  5. 在過濾器中輸入“xml-apis”。 在我的情況下,拉取 xml-apis 的頂級依賴項是“esapi”
  6. 從 esapi 依賴項中排除 xml-apis:

     <dependency> <groupId>org.owasp.esapi</groupId> <artifactId>esapi</artifactId> <version>2.2.0.0</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency>
  7. 右鍵單擊您的項目並選擇“Maven -> 更新項目...”。 檢查您的項目,然后單擊“確定”。

就是這樣

嘗試更改類路徑上元素的順序。 JRE 必須在 Maven 依賴項之前。 這解決了問題。

我的猜測是 Java 10 編譯器注意到您正在嘗試用 JAR 中的代碼替換內部類 ( java.xml.namespace ),但它不喜歡那樣。

我在從 Java 8 遷移到 Java 11 時遇到了同樣的錯誤,並且我包含了對 stax-api 1.0-2 庫的顯式依賴:

<dependency>
  <groupId>javax.xml.stream</groupId>
  <artifactId>stax-api</artifactId>
  <version>1.0-2</version>
</dependency>

並排除了對庫 stax-api 1.0.1 的任何過渡依賴:

    ...
    <exclusion>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
    </exclusion>
    ...

在此之后,我的 IDE 正確地找到了丟失的導入 javax.xml.namespace.QName。

我希望這有幫助。

通過從項目類路徑(項目 -> 屬性 -> java 構建路徑 -> 庫 -> 類路徑)中刪除 jsr173_api.jar 來解決它。 eclipse工程重建的時候又出現了。

這有效! 檢查多種類型Ctrl + Shift + T ,刪除不需要的。

暫無
暫無

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

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