首頁 >Java >java教程 >如何避免 Java/Maven 中的「Xerces Hell」?

如何避免 Java/Maven 中的「Xerces Hell」?

Patricia Arquette
Patricia Arquette原創
2024-11-20 04:23:01330瀏覽

How to Avoid

處理 Java/Maven 中的「Xerces Hell」?

背景

Xerces 是 Java 生態系統中廣泛使用的 XML 解析器,具有重要意義由於歷史因素和包裝問題帶來的挑戰。官方的 Xerces 二進位檔案缺乏版本控制,且該專案未正式上傳到 Maven Central。此外,將 Xerces 拆分為多個 jar(xml-api、xercesImpl)以及不同各方的不同版本控制實踐使問題變得更加複雜。在 Maven 環境中使用 Xerces 時,這會導致衝突和類別載入器問題。

問題

衝突解決

Maven 無法解決同一工件的不同版本之間的衝突,即使在由不同組織發布,會導致包含多個Xerces 依賴項的情況,從而可能導致類路徑衝突。

類別載入器地獄

將Xerces 包含在JAXP 參考實作和servlet 容器中,再加上Maven 依賴項中可能存在衝突的版本,創建了一個複雜的類別載入場景,需要仔細管理以避免運行時的類別載入器衝突。

解決方案

由於存在多個別名和依賴關係,嘗試排除或標記所提供的 Xerces 依賴關係可能具有挑戰性第三方庫和框架。然而,一個重大的進展已經出現:

最近更新

2013 年 2 月,上傳了 Xerces 建置腳本的修補版本以修復 Maven Central 上傳問題。 Xerces 2.11.0 JAR 現已在 Maven Central 中提供,解決了長期存在的版本控制和打包問題。

此開發顯著簡化了 Maven 專案中的 Xerces 依賴項管理。開發人員現在可以使用以下相依性聲明來正確解析 Xerces:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
</dependency>

此解決方案消除了對細粒度依賴項控制和複雜的分層類別載入機制的需要。

以上是如何避免 Java/Maven 中的「Xerces Hell」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn