maven解決jar衝突除錯步驟
錯誤日誌:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilter' defined in ServletContext resource [/WEB-INF/spring/tbm_web_shiro.xml]: Cannot resolve reference to bean 'securityManager' while setting bean property 'securityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityManager' defined in ServletContext resource [/WEB-INF/spring/tbm_web_shiro.xml]: Cannot resolve reference to bean 'myRealm' while setting bean property 'realm'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myRealm' defined in ServletContext resource [/WEB-INF/spring/tbm_web_shiro.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.topsec.tbm.web.auth.TbmRealm]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: javassist.util.proxy.ProxyFactory.setUseCache(Z)V
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) ~[spring-beans-4.0.1.RELEASE.jar:4.0.1.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107) ~[spring-beans-4.0.1.RELEASE.jar:4.0.1.RELEASE]
原因:jar衝突
org.apache.struts:struts2-core:jar:2.3.16自動引入了javassist:javassist:jar:3.11.0.GA
自己開發的系統中使用了:org.javassist:javassist:jar:3.18.1-GA
檢視這兩個jar中的class基本上一樣。這兩個jar分別屬於不同的group.
看看maven定義:
struts自動引入的jar是這個maven定義:
<dependency>
<groupId>javassist</groupId>
<artifactId>
</dependency>
而專案中使用的是:
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
解決辦法:mavnen引入strtus時排出javassist這個jar
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <exclusions> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency>
擴充套件:
排除這個錯誤的方法:
1.使用ctrl+shift+T 查一下這個類的出處:
2.使用mvn dependency:copy-dependencies命令,這樣將在pom.xml所在的目錄下生成target\dependency目錄。
3.檢視步驟2中的目錄可以看到有這個javassist.jar有兩個不同版本的jar,為什麼會有兩個這種jar呢?檢視一下引用樹吧。
4.使用命令mvn dependency:tree > 1.txt輸出下引用的目錄結構
[INFO] +- org.apache.struts:struts2-core:jar:2.3.16:compile
[INFO] | +- org.apache.struts.xwork:xwork-core:jar:2.3.16:compile
[INFO] | | +- asm:asm:jar:3.3:compile
[INFO] | | \- asm:asm-commons:jar:3.3:compile
[INFO] | | \- asm:asm-tree:jar:3.3:compile
[INFO] | +- org.freemarker:freemarker:jar:2.3.19:compile
[INFO] | +- ognl:ognl:jar:3.0.6:compile
[INFO] | | \- javassist:javassist:jar:3.11.0.GA:compile
......
[INFO] +- org.hibernate:hibernate-core:jar:4.3.3.Final:compile
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
[INFO] | +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
[INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] | +- org.javassist:javassist:jar:3.18.1-GA:compile
5.使用maven的exclusion排除干擾的jar.
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <exclusions> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency>
相關推薦
maven解決jar衝突除錯步驟
錯誤日誌: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilter' defined in ServletContext reso
Maven 解決Jar包版本衝突
今天遇到一個小問題。在使用apache-commons-codec包進行編碼/解碼的時候,用到了Base64類的decodeBase64(String base64String)方法,這個方法在1.4版中才提供。而我們的工程中對codec存在兩個
【詳】Maven中解決jar衝突方案(親身測試)
Maven開發中jar衝突最令人頭疼: [INFO] Scanning for projects... [ERROR] [ERROR] Some problems were encountered while processing the POMs: [WARNING] 'depen
Maven解決jar包衝突
在使用Maven時,經常會遇到jar包衝突的問題,解決辦法: 在pom.xml檔案中使用maven的exclusions工具,語法如下: 避免hadoop-client-2.2.0.jar引入hado
Maven解決jar包依賴衝突
使用maven最煩人的可能就是類包之間的版本衝突引發的問題了,類包衝突的一個很大的原因即產類包之間的間接依賴引起的。每個顯式宣告的類包都會依賴於一些其它的隱式類包,這些隱式的類包會被maven間接引入進來,因而可能造成一個我們不想要的類包的載入,嚴重的甚至會引起類包之間的衝突。 要解決這個問題,首先就是要檢視
Maven 解決jar包衝突的原理
管理包依賴是 Maven 核心功能之一,下面通過如何引入 jar 包;如何解析 jar 包依賴;包衝突是如何產生;如何解決包衝突;依賴管理解決什麼問題;什麼是依賴範圍;使用包依賴的最佳實踐等 6 個問題來介紹。 如何引入 jar 包 在程式碼開發時,如果需要使用第三方 jar 包提供的類庫,那麼需要在 pom
maven解決jar包版本衝突
Maven對於新手來說是《步步驚心》,因為它包羅永珍,博大精深,因為當你初來乍到時,你就像一個進入森林的陌生訪客一樣迷茫。 Maven對於老手來說是《真愛配方》,因為它無所不能,利如刀鋒,使用Maven做開發,如飲美酒如悅美人。 Maven對於新手來說,最痛苦的一件事莫過於
maven 解決依賴衝突 omiit for conflict
maven依賴衝突,原因: 衝突寫法如下: <dependency> <groupId>org.apache.httpcomponents</groupId> <ar
10.idea中如何解決maven的jar版本衝突問題
什麼時候會出現jar包版本衝突問題呢,如下 比如當你自己依賴的spring版本是5.0.4而依賴的spring版本是更低的(這裡可以看到是2.5.6如下)的時候要怎樣解決jar版本衝突 呢?(這裡其實兩個spring不衝突,看字尾,只是舉個例子) 此時可以在pom檔案中右鍵d
【maven】排除maven中jar包依賴的解決過程 例子:spring cloud啟動zipkin,報錯maven依賴jar包衝突 Class path contains multiple SLF4J bindings.
一直對於maven中解決jar包依賴問題的解決方法糾結不清: 下面這個例子可以說明一個很簡單的解決方法: 專案啟動報錯: Connected to the target VM, address: '127.0.0.1:59412', transport: 'sock
【maven 】jar包衝突-記一次衝突解決
1、請到pom.xml檔案所在的目錄(包含父子目錄)下分別執行下面的命令排查是什麼原因導致fastjson版本不正確: mvn dependency:tree -Dverbose -Dincludes=com.alibaba:fastjson 2、配合excusions標籤排除過時的包 &n
maven專案jar包衝突解決方案
上圖中顯示的是servlet2.3而不是3.0。 解決方法: 網上都說servlet-api衝突是因為專案部署的時候WEB-INFO/lib下面的servlet-api和servlet中的servlet-api產生衝突,其實我的不然。因為我的專案是用maven管理的,在pom.
怎麼解決maven管理jar包衝突問題
maven管理jar包依賴的時候,假如你的依賴包A需要間接依賴B的1.0版本,而你的工程裡又需要用到B的2.0版本,這個時候就可能會出現執行時jar衝突的異常,會報java.lang.NoSuchMethodError 或者 java.lang.ClassNotFoundE
用maven工具解決jar包衝突問題或重複載入問題
在使用maven開發專案的過程中,經常會遇到jar包重複載入或者jar包衝突的問題的,但是由於有些jar是由於maven的依賴載入自動載入進來的, 而不是開發者自己配置的,特別是當專案中pom中配置的jar包依賴本身很多時,開發者靠自己的經驗,有時很難找出是哪
eclipse利用maven工具解決jar包衝突問題
專案中出現的問題如下: Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory 原因 : maven自動載
maven專案解決jar包衝突的四種方式
依賴一個jar包往往會下載相互關聯的jar包這就是依賴傳遞 依賴傳遞經常出現ja包衝突,解決方案:直接排除指定的jar包 1、排除原則 <exclusions> <exc
maven 檢查jar依賴衝突和版本衝突 以及解決
問題描述: 專案中用到dubbo實現分散式遠端呼叫服務,整合dubbo的時候,遇到一個Spring的錯誤,NoSuchMethodError的問題。由於匯入了不同版本的jar包造成的。
Maven之jar包衝突解決
用了Maven之後,不得不說它是一個很好的用於專案構建,管理,jar包管理的工具,但是使用過程中,相信各位也遇到過jar衝突這種煩人的問題,特別是大專案,依賴的jar包比較多,很容易造成jar包衝突,jar包衝突的一個很大的原因即產類包之間的間接依賴引起的。每個顯式宣告的類包
maven依賴jar包時版本衝突的解決
共有四種解決方式: 1、第一宣告優先原則: 在pom.xml配置檔案中,如果有兩個名稱相同版本不同的依賴宣告,那麼先寫的會生效。 所以,先宣告自己要用的版本的jar包即可。 2、路徑近者
Maven中jar包衝突的解決方式
現象 建立一個maven工程,引入spring-context包。 <dependency> <groupId>org.springframework</groupId> <artifactId>s