1. 程式人生 > >java庫檔案衝突的解決辦法

java庫檔案衝突的解決辦法

前文 說到我最近要維護SDK的程式碼,然後最近有個問題,就是我們這邊使用的一個庫和我們的使用者使用的這個庫衝突了,兩邊都不好改,我研究了一下,要麼我從頭寫一個,要麼只能協調版本號,那麼有沒有其他簡單快捷的方法呢?這就是本文的目的了!就是修改下我這邊使用的庫的包名就可以了。

資料與介紹

jarjar
github : https://github.com/shevek/jarjar
googlecode : https://code.google.com/archive/p/jarjar/
download

Jar Jar Links是一個實用程式,可以輕鬆地重新打包Java庫並將它們嵌入到您自己的發行版中。 這有用有兩個原因:

  • 您可以輕鬆地傳送沒有外部依賴項的單個jar檔案。
  • 您可以避免庫依賴於庫的特定版本的問題,這可能與另一個庫的依賴項衝突。

它是如何工作的?

Jar Jar Links包含一個擴充套件內建jar任務的Ant任務。 普通的zipfileset元素用於嵌入jar檔案。 添加了一個新的規則元素,它使用萬用字元模式重新命名嵌入的類檔案。 位元組碼轉換(通過ASM)用於更改對重新命名類的引用,併為移動資原始檔和轉換字串文字提供特殊處理。

使用方法

java -jar jarjar-1.4.jar process rules.txt google-collections-1.0.jar google-collections-old-1.0.jar

rules.txt

rule com.google.** [email protected]

參考資料:

1,https://stackoverflow.com/questions/13746737/hand-edit-a-jar-to-change-package-names
2,https://github.com/shevek/jarjar