axis2 jar包冲突_一个jar包冲突引起的StackOverflowError
項目運行中錯誤信息:java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/app] due to a StackOverflowError.
Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.
The class hierarchy being processed was [org.bouncycastle.asn1.ASN1EncodableVector->org.bouncycastle.asn1.DEREncodableVector->org.bouncycastle.asn1.ASN1EncodableVector
解決辦法:
Run configuration ?--> Arguments --> VM arguments -Xss4m
以上方式治標不治本,我的錯誤信息里面已經提示的比較明顯了:cyclic inheritance dependencies
所以,這里靠譜的解決辦法應該是:
找到沖突的jar包,Excluded掉其中一個就是了
如何找到沖突的jar包并Excluded掉?
1、打開工程pom文件
2、進入Dependency Hierarhcy視圖
3、選擇其中一個jar包,右鍵Excluded Maven Artifact,。。。
idea下解決辦法:
Run configuration ?--> Arguments --> VM arguments -Xss4m
以上方式治標不治本,我的錯誤信息里面已經提示的比較明顯了:cyclic inheritance dependencies
所以,這里靠譜的解決辦法應該是:
找到沖突的jar包,Excluded掉其中一個就是了
如何找到沖突的jar包并Excluded掉?
1、打開工程pom文件
2、左下角進入Dependency Analzer視圖,可以看到confilcts和All Dependency as tree
3、選擇其中一個jar包,右鍵Excluded Maven Artifact,。。。
重啟項目即可。
通用方法:
對于Jar包沖突問題,我們開發人員經常都會有碰到,當我們使用一些jar包中的類、方法等,或者有時遇到一些日志系統的問題(參考另一篇文章Jar包沖突導致的日志問題),我們會遇到ClassNotFoundException,NoSuchFieldException,NoSuchMethodException 之類的運行時異常,從經驗上我們就會判斷,Jar包沖突了。解決Jar包沖突問題,每個人都有每個人的方法,這里我介紹一下我的方法,供大家參考。
處理方法
當遇到jar包沖突時,我們首先確定是哪個jar包沖突了,這個很容易,看我們調用的類或方法,是屬于哪個Jar包。然后就是要找出沖突了,我這里使用命令
mvn dependency:tree -Dverbose -Dincludes=:
填寫上Jar包的groupId和artifactId,可以只有一個,但是中間的冒號不要少,這樣就會輸出依賴樹,而且是僅包含這個Jar包的依賴樹,這樣那些地方依賴了這個Jar包的那個版本就一目了然了。
例如,我的項目中notify-common包存在沖突,我們使用命令
mvn dependency:tree -Dverbose -Dincludes=:notify-common
得到依賴樹輸出
[INFO] com.taobao.wlb:bis-server:war:1.0-SNAPSHOT
[INFO] +- com.taobao.wlb:bis-core:jar:1.0-SNAPSHOT:compile
[INFO] | \- com.taobao.logistics:schedule-client:jar:1.1.1:compile
[INFO] | \- (com.taobao.notify:notify-common:jar:1.8.15:compile - omitted for conflict with 1.8.19.26)
[INFO] \- com.taobao.notify:notify-tr-client:jar:1.8.19.26:compile
[INFO] +- com.taobao.notify:notify-common:jar:1.8.19.26:compile
[INFO] \- com.taobao.notify:notify-remoting:jar:1.8.19.26:compile
[INFO] \- (com.taobao.notify:notify-common:jar:1.8.19.26:compile - omitted for duplicate)
看一下依賴樹中所有的葉子節點就是所有的notify-common包,我們可以看到我們依賴的bis-core中依賴了schedule-client包,它依賴了一個notify-common包,版本是1.8.15,第四行的后面也提示了這個包同其他包有沖突
- omitted for conflict with 1.8.19.26)。而我們的系統依賴的notify-tr-client包所依賴的版本是1.8.19.26,于是我們知道是這里沖突了,在POM排除掉依賴,OK了。
說明
這里我們對我們執行的命令做一個簡單的說明。
mvn dependency:tree -Dverbose -Dincludes=:
第一部分mvn dependency:tree是maven依賴的分析命令,作用是對我們的項目的依賴進行分析,并輸出項目依賴樹
第二部分-Dverbose的作用是添加了verbose一個環境變量,起的作用是在分析項目依賴時輸出明細,這樣項目中依賴的所有引用都會被輸出出來,包含了所有的間接引用,會有很多很多,我們只需要我們要找的,所以就需要第三個參數了
第三部分-Dincludes=:的作用就是進行過濾,只包含我們想要的依賴的依賴時,排除掉其它不需要的,依賴樹的所有葉子節點就是我們的找的依賴包。其中的groupId和artifactId可以只填寫一個,為了保證準確性,一般都會填兩個(填寫時不包括尖括號)。
其他方法:
1、對于maven工程,我的辦法是使用eclipse來解決,點開pom.xml,切換到hierarchy dependency,右上角搜索對應的包,可以清晰地看到沖突版本
2、可以使用idea,在pom.xml中右單擊 選擇Diagrams-》show dependencies
3、mvn dependency:tree -Dverbose > tree.log
直接輸出沖突的jar文件
jar包沖突問題
這兩天在啟動一個新項目的時候,項目一直啟動不了,報StackOverFlow; java.util.concurrent.ExecutionException: java.lang.StackOver ...
為什么項目的jar包會和tomcat的jar包沖突?
為什么項目的jar包會和tomcat的jar包沖突? 碰到這個問題,猜測tomcat啟動時會將自己的lib和項目的lib在邏輯上歸并為一個大的lib,但是并沒有做版本區分以及去重,這樣相同的包可能就有 ...
weblogic與axis2 jar包沖突
1.org.springframework.web.util.NestedServletException: Handler processing failed; nested exception i ...
sbt公布assembly解決jar包沖突 deduplicate: different file contents found in the following
一個.問題定義 近期使用sbt戰斗assembly發生故障時,包,在package什么時候,發生jar包沖突/文件沖突,兩個相同class來自不同jar包classpath內心沖突. 有關詳細信息:我 ...
如何解決使用Gradle時出現的jar包沖突
前言 在我之前使用Gradle的博文中已經提到,Gradle對依賴的管理是比較智能的,如果有兩個包依賴于相同的包,而版本不同的時候,Gradle會進行自動的選擇,從而避免jar包的沖突. 也就是說,在 ...
記一次jar包沖突
題記:永遠不要在同一個項目中,引用不同版本的兩個jar包,否則,這可能就是一個大坑. 在做網校項目的時候,幫助中心要使用lucene,所以就引入了lucene-5.5.1的包,刪掉了原先存在于項目中的 ...
重新看待Jar包沖突問題及解決方案
Jar包沖突是老生常談的問題,幾乎每一個Java程序猿都不可避免地遇到過,并且也都能想到通常的原因一般是同一個Jar包由于maven傳遞依賴等原因被引進了多個不同的版本而導致,可采用依賴排除.依賴管理 ...
【BUG】websphere找不到類或jar包沖突
來自:http://liuwei1578.blog.163.com/blog/static/49580364200991572642653/ Jar包沖突問題是在大型Java軟件開發中經常遇到的問題, ...
隨機推薦
hive 調優總結
一.join優化 做join之前對數據進行預處理,減少參加join的數據量,把數據量少的表放入內存中,制作map端的join 應該將條目少的表/子查詢放在?Join?操作符的左邊.原因是在?Join? ...
使用.net Stopwatch class 來分析你的代碼
當我們在調試,優化我們的代碼的時候,想知道某段代碼的真正的執行時間,或者我們懷疑某段代碼,或是某幾段代碼執行比較慢, 需要得到具體的某段代碼的具體執行時間的時候.有一個很好用的類Stopwatch. ...
extjs 一些雜碎的技術問題
1怎樣將grid 的checkedbox 勾選狀態都清除 inv.getSelectionModel().clearSelections(); inv.getView().refresh(); 2怎樣 ...
SQL server 2008無法修改表
長久未使用SQL server,一直都是使用Navicat來處理各種數據庫,感覺使用很方便,但由于實際需要,必須要用SQL server創建新的數據庫,卻意外的遇到了以前從未遇到過的問題. 在建好表以 ...
JS類定義方式
// 方法1 對象直接量 var obj1 = { v1 : "", get_v1 : function() { return this.v1; }, set_v1 : funct ...
設計模式入門之裝飾器模式Decorator
//裝飾模式定義:動態地給一個對象加入一些額外的職責. //就添加功能來說.裝飾模式比生成子類更為靈活 //這也提現了面向對象設計中的一條基本原則,即:盡量使用對象組合,而不是對象繼承 //Compo ...
ArcGIS10.6了解一下
因為計算機水平不斷更新,ESRI不得不重新傾力打造下一代ArcMap,叫ArcGIS Pro,現在ArcGIS Pro功能有一定地突顯,但還不夠強大和穩定:而ArcGIS Desktop方面沒有什么大 ...
史上最全PHP正則表達式實例匯總
收集了一份php正則表達式的實例教程,真心不錯,記錄下. 正則表達式用于字符串處理.表單驗證等場合,實用高效. 一些常用的表達式: $str = preg_replace("/(
【代碼筆記】iOS-iphone開發之獲取系統字體
代碼: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NS ...
【find】Linux中find常見用法示例
1.根據 某個名字在某個目錄下進行查找 find /etc/ -name "*.conf" 在/etc/目錄下 查找 后綴名為conf 的文件
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的axis2 jar包冲突_一个jar包冲突引起的StackOverflowError的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装载向导_麦德美爱法:异构集成时代的高阶
- 下一篇: 点击延迟_300ms 延迟是什么,如何解