jar 包衝突解決辦法


jar包衝突常見的異常爲找不到類(java.lang.ClassNotFoundException)、

找不到具體方法(java.lang.NoSuchMethodError)、

字段錯誤( java.lang.NoSuchFieldError)

或者類錯誤(java.lang.LinkageError);


1 通過mvn dependency:tree  >  tree.txt 導出全部的依賴。 可以使用 -Dverbose 、-Dincludes或者-Dexcludes參數來精確定位導致衝突的jar包。

這裏我們對我們執行的命令做一個簡單的說明。
mvn dependency:tree -Dverbose -Dincludes=<groupId>:<artifactId>
第一部分mvn dependency:tree是maven依賴的分析命令,作用是對我們的項目的依賴進行分析,並輸出項目依賴樹
第二部分-Dverbose的作用是添加了verbose一個環境變量,起的作用是在分析項目依賴時輸出明細,這樣項目中依賴的所有引用都會被輸出出來,包含了所有的間接引用,會有很多很多,我們只需要我們要找的,所以就需要第三個參數了

第三部分-Dincludes=<groupId>:<artifactId>的作用就是進行過濾,只包含我們想要的依賴的依賴時,排除掉其它不需要的,依賴樹的所有葉子節點就是我們的找的依賴包。其中的groupId和artifactId可以只填寫一個,爲了保證準確性,一般都會填兩個(填寫時不包括尖括號)。


對於maven工程,使用eclipse來解決,點開pom.xml,切換到hierarchy dependency,右上角搜索對應的包,可以清晰地看到衝突版本。

可以使用添加jvm參數的方式啓動程序,將類加載的具體jar信息打印出來;-verbose:class

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章