」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼切換到 JDK 10 後 Eclipse 找不到我的 XML 類別?

為什麼切換到 JDK 10 後 Eclipse 找不到我的 XML 類別?

發佈於2024-12-22
瀏覽:384

Why Can\'t Eclipse Find My XML Classes After Switching to JDK 10?

Eclipse 無法定位JDK 10 建置路徑轉換後的XML 類別:解決方案

嘗試將Maven 專案的建置路徑切換到JDK 10時在Eclipse 中,使用者可能會遇到Eclipse 建置過程無法找到XML 相關類別(包括javax.xml.xpath.XPath)的問題, org.w3c.dom.Document 和 org.xml.sax.SAXException。這些困難主要影響從 xml-apis-1.4.01 依賴項派生的類別。

根本原因

專案從 Java 1.8 轉換到 Java 時會觸發該行為10 無需使用 module-info.java 檔案明確宣告為模組。這意味著專案的程式碼是在未命名模組中編譯的,該模組對命名的命名模組和未命名模組具有完全可見性,包括 JRE 系統庫中的 java.xml,該程式庫導出這些有問題的套件。

此外,xml-類別路徑上的 apis.java 提供了另一組相同的套件。然而,這些套件與未命名的模組關聯,導致違反 JLS §7.4.3 中定義的「唯一可見性」要求。因此,程式將變得無效並面臨編譯器的拒絕。

解決方案

要解決此問題,可以採用以下三種方法之一:

(1) 將專案宣告為模組

專案內部引進一個module-info.java 文件,定義具體哪些模組專案應該仔細閱讀「requires」關鍵字的使用。這種方法透過明確說明匯入哪些套件來確保唯一的可見性。

(2) 限制可觀察模組

如果不將項目轉換為模組,則可以排除來自可觀察模組集的 java.xml。在 Eclipse 中,這可以透過「內容」標籤下的「模組化詳細資料」對話方塊來完成。可能需要將除 java.base 之外的大多數模組推送到「可用模組」列,並選擇性地重新添加必要的模組。

(3) 排除java.xml (JDK Bug)

不太推薦這種方法,因為它利用了javac 中的一個錯誤,允許非法情況通過編譯。透過將 java.xml 移至建置路徑的末尾,可以有效地對未命名模組隱藏它。然而,這可能會導致意外的行為,並且不是一個可靠的長期解決方案。

總之,在 Eclipse 中切換到 JDK 10 時出現與 XML 相關的類別未找到問題是由於違反了獨特的可見性要求。該問題可以透過模組化專案或限制可觀察的模組來解決。

最新教學 更多>
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-12-22
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-12-22
  • 如何在 JavaScript 中可靠地將字串轉換為日期物件?
    如何在 JavaScript 中可靠地將字串轉換為日期物件?
    在 JavaScript 中將字串轉換為日期物件軟體開發中的許多場景都涉及日期和時間的處理。在 JavaScript 中,建立日期時,通常需要將表示日期的字串轉換為 Date 物件。以下是如何實現這種轉換:推薦的字串解析方法是利用 ISO 格式以及 Date 物件建構子。例如:var st = &q...
    程式設計 發佈於2024-12-22
  • 如何擺脫Python中的循環依賴?
    如何擺脫Python中的循環依賴?
    如何在 Python 中避免循環依賴循環依賴可能是軟體開發中的常見問題,尤其是在使用分層架構或複雜模組結構時。在 Python 中,循環依賴可能會導致多種問題,包括匯入錯誤和屬性錯誤。 可能導致循環依賴的場景一個可能導致循環依賴的常見場景是兩個類別時依賴彼此的實例作為屬性。例如:class A: ...
    程式設計 發佈於2024-12-22
  • 在 JavaScript 中使用 setTimeout 時如何保留「this」引用?
    在 JavaScript 中使用 setTimeout 時如何保留「this」引用?
    setTimeout 和JavaScript 中難以捉摸的「this」使用setTimeout 函數時,開發者經常會遇到後續呼叫方法遺失的問題他們的預期上下文,導致看似未定義的方法。這通常是由於丟失“this”引用引起的。 問題:考慮以下程式碼:test.prototype.method = fun...
    程式設計 發佈於2024-12-22
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段中:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內...
    程式設計 發佈於2024-12-22
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-22
  • 為什麼要使用 SwingUtilities.invokeLater?
    為什麼要使用 SwingUtilities.invokeLater?
    SwingUtilities.invokeLater:仔細觀察在 Swing 程式設計領域,SwingUtilities.invokeLater 扮演至關重要的角色。這個方法到底是做什麼的,它跟在主執行緒直接執行程式碼有何不同? SwingUtilities.invokeLater,顧名思義,將給定...
    程式設計 發佈於2024-12-22
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決「一般錯誤:2006 MySQL 伺服器已消失」介紹:將資料插入MySQL 資料庫有時會導致錯誤「一般錯誤:2006 MySQL 伺服器已消失」。當與伺服器的連線遺失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變數之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2024-12-22
  • 如何在 Spring 中串流大型 MySQL 結果集以避免 OutOfMemoryError?
    如何在 Spring 中串流大型 MySQL 結果集以避免 OutOfMemoryError?
    使用MySQL 串流處理大型結果集在Spring 應用程式中處理大量MySQL 表時,當驅動程式試圖執行下列操作時,可能會出現OutOfMemoryException:將整個表載入到記憶體中。設定statement.setFetchSize(Integer.MIN_VALUE);可能還不夠,因為這僅...
    程式設計 發佈於2024-12-22
  • 在 SQL 中更新同一個表後,如何安全地更新觸發器內的表?
    在 SQL 中更新同一個表後,如何安全地更新觸發器內的表?
    更新同一個表後更新觸發器中的表在SQL 中,更新觸發器後更新表同一張表提出了一個潛在的問題。這是因為該表已針對更新操作鎖定,並且嘗試在作為相同交易的一部分執行的觸發器內存取該表可能會導致衝突。 要規避此限制,您可以更新透過使用 BEFORE 選項而不是 AFTER 來影響觸發器中的列。這允許您在原始...
    程式設計 發佈於2024-12-22
  • 使用PHP的DOMDocument擷取節點時如何保留HTML標籤?
    使用PHP的DOMDocument擷取節點時如何保留HTML標籤?
    使用DOMDocument 提取HTML 節點的問題簡介DOMDocument 是PHP 類,提供了一種便捷的解析方法以及操作HTML 文件。然而,當嘗試在提取內容時保留 HTML 標籤時,使用者可能會遇到困難。本文深入探討了 DOM 的基本概念,並提出了應對這項挑戰的解決方案。 理解 DOM 和節...
    程式設計 發佈於2024-12-22
  • 如何在 Python 類型提示中指定函數類型?
    如何在 Python 類型提示中指定函數類型?
    在類型提示中指定函數類型在Python中,類型提示用於提供有關變數和函數參數的預期類型的可選元資料。然而,將變數的類型提示指定為函數類型似乎不清楚。 解決方案儘管相關中缺少“typing.Function” PEP 483,您可以使用下列指令將變數的型別提示指定為函式型別"typing.C...
    程式設計 發佈於2024-12-22
  • 為什麼我在發送 URL 編碼的 POST 請求時收到 400 BAD REQUEST?
    為什麼我在發送 URL 編碼的 POST 請求時收到 400 BAD REQUEST?
    帶有URL 編碼負載的POST 請求當構造帶有URL 編碼資料的POST 請求時,經常會遇到400 BAD REQUEST 回應,表示伺服器無法理解負載。當有效負載提供不正確時,通常會出現此問題。 標準函式庫的 http.NewRequest(...) 方法期望將有效負載作為第三個參數提供,該參數應...
    程式設計 發佈於2024-12-22
  • HTML 格式標籤
    HTML 格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2024-12-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3