簡體   English   中英

關於“可以從多個模塊訪問包 org.w3c.dom 的具體問題:<unnamed> ,java.xml&quot;

[英]Specific question concerning "The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml"

我正在將我的公司項目從 Java 1.8 遷移到 OpenJDK 14。像其他多個人一樣(在這個這個這個線程中)我遇到了 Java 9 模塊化的一些麻煩,特別是包org.w3c.dom

我已經生成了module-info.java ,目前 JRE 系統庫 (OpenJDK 14) 和所有外部 JAR 都在 Java 構建路徑的 Modulepath 上。 所以我不再有錯誤module: <unnamed> 我現在得到的實際編譯錯誤是:

The package org.w3c.dom is accessible from more than one module: batik.all, java.xml, xml.apis.ext

順便說一句,我不能簡單地刪除 JAR batik.allxml.apis.ext ,因為項目中使用的其他包不在 JavaSE 中。

我的主管還告訴我不要將任何非 maven 項目轉換為 maven 項目,我提到了這一點,因為我發現的所有其他參考資料似乎都在討論利用 Maven 依賴項和排除項的解決方案。

現在經過一些分析,我得出的結論是,我擺脫這些錯誤的最有效方法是解壓兩個 JAR 文件,反編譯這些包,從這些外部 JAR 中刪除重復的org.w3c.dom並最后重新編譯整個內容並將該自定義 JAR 傳遞到構建路徑。

  1. 這個想法有意義嗎? 如果您不能使用 Maven 依賴項,您會這樣做嗎?
  2. 由於我們從 1.8 遷移,我從未真正使用過module-info.java ,所以也許有一種更簡單的方法來排除該文件中的那些包? 我對替代解決方案持開放態度!
  3. 最后但並非最不重要的一點是,如果我所描述的解決方案是可行的,那么解壓和重新打包這些 JAR 文件的最佳方法是什么?

您不需要反編譯/重新編譯任何東西,您只需刪除該包對應的 JAR 文件中的目錄即可。

暫無
暫無

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

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