您好,登錄后才能下訂單哦!
這篇文章主要講解了“jar包版本沖突問題怎么解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“jar包版本沖突問題怎么解決”吧!
排查:
1)查看jar包的版本:-XX:+TraceClassLoading 或 -verbose:class 2)找到沖突的jar包: 1>idea中Maven Projects視圖下,點擊工具欄的第9個圖標(show dependencies),稍等片刻就會出現一張顯示jar包依賴關系的圖。 2>紅色的實線表示有沖突(右鍵Exclude即可解決沖突),紅色的虛線表示同一個jar被多次引用的地方。
解決:
1)在pom中去除不需要的版本<scope>provided</scope>,在打包階段就盡可能避免掉版本沖突的問題。 2)如果沖突發生了,則Exclude沖突的jar包即可。
舉例:
問題:Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: com.google.common.base.Splitter.splitToList(Ljava/lang/CharSequence;)Ljava/util/List; 排查: -XX:+TraceClassLoading 或 -verbose:class 排查結果:[Loaded com.google.common.base.Splitter from file:/E:/Tomcat/apache-tomcat-8.0.33/webapps/advertise-management-control/WEB-INF/lib/guava-11.0.2.jar] 在/apache-tomcat-8.0.33/webapps/ROOT/WEB-INF/lib/下發現有兩個guava的jar包:guava-11.0.2.jar 和 guava-19.0.jar 解決: 通過idea的show dependencies功能,發現有兩個依賴分別引用了guava-11和guava-19,splitToList這個方法是guava-19提供的方法,故我們在引用guava-11的依賴中將guava Exclude后即解決了問題。
補充:
idea中Maven Projects視圖下: 1)點擊工具欄的第9個圖標(show dependencies),稍等片刻就會出現一張顯示jar包依賴關系的圖。 2)紅色的實線表示有沖突(右鍵Exclude即可解決沖突),紅色的虛線表示同一個jar被多次引用的地方。 注意: 1>Exclude沖突的jar包后,需要手動到tomcat的webapps目錄下將工程刪掉,然后重新部署。否則的話,\webapps\project-name\WEB-INF\lib下很可能還存在(之前下載的)沖突的jar包。 2>使用mvn dependency:tree 查看jar包之間的依賴關系不太靠譜,故推薦使用idea提供的功能。
感謝各位的閱讀,以上就是“jar包版本沖突問題怎么解決”的內容了,經過本文的學習后,相信大家對jar包版本沖突問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。