1. 程式人生 > >同一個jar包不同版本衝突解決方法

同一個jar包不同版本衝突解決方法

一個專案裡面同一個jar包一般不能有兩個版本的 不然可能會出現jar包衝突的情況

常見報錯有這三個:
1、java.lang.ClassNotFoundException(找不到類)
2、java.lang.NoSuchMethodError(找不到具體方法)
3、java.lang.NoSuchFieldError(欄位錯誤)
4、java.lang.LinkageError(類錯誤 這個我沒怎麼見過)

解決方法有:
1、刪了舊版本的jar包,不過可能會導致一些舊程式碼不能用 (不推薦)
2、合併新舊兩個jar包,這個有比較高的技術要求(不會)
3、拆開jar包,修改裡面的package,然後在生成一個新的jar包(方便,簡單,如果遇到需要就該jar包內容的情況,這個方法也適用)

這個文章寫第三種方法

1、首先下載jarjar.jar :

2、隨便放一個地方(我放到E盤的jarjar資料夾下)

3、開啟cmd,cd到E盤的jarjar資料夾,然後就執行jarjar.jar(如圖1、2兩個步驟)
這裡寫圖片描述

4、開啟一個txt 輸入rule org.apache.http.** [email protected]來設定轉換規則,並且存到jarjar資料夾下
(格式就這樣:rule xxxx.xx.aaa.** [email protected])修改的地方就是aaa那裡

5、把需要轉換的 xxxxx1.jar放到jarjar資料夾裡面,然後輸入java -jar jarjar.jar strings xxxxx1.jar,檢視你要修改的jar包的包名

6、輸入java -jar jarjar.jar process ./aa.txt xxxxx1.jar ./xxxxx2.jar開始轉換(xxxxx1.jar是需要被修改路徑的jar包 xxxxx2.jar是修改後生成jar包的名字)
這裡寫圖片描述

到這裡 看到紅線下面那個E:\jarjar> 就代表整個步驟完成了,可以去jarjar資料夾看一下你新的jar包,這個jar包匯入專案的時候也不用擔心說衝突了。