Maven解決沖突的工具
①,使用maven helper
②,mvn dependency:tree
③,使用idea自帶的maven依賴圖,進行ctrl+f搜索沖突的依賴,然后進行exclusion
常見錯誤
1,一個類同時存在多個不同的jar包中(jar沖突)
解決:
①,找到沖突的jar依賴有那幾個?
②,確認要保留那個jar,排除那個jar?
③,再使用Maven helper或者mvn dependency:tree查到需要排除的jar所在位置,然后exclusion掉需要排除的依賴
2,一個類同時存在同一個jar包的不同版本(版本沖突)
原因:一個jar可能存在直接或者間接依賴導致同一個jar在一個項目中同時出現多個版本,需要排除掉較低的版本
解決:
①,先找到這個jar在這個項目中總共有幾個版本,然后保留最高版本
②,如果pom中明確定義了jar的版本,刪除低版本依賴
③,如果pom中沒有定義jar的版本,比如jackson-databind.2.8.1根本在項目中沒有定義
在根目錄下的pom文件dependencyManagement中設置指定版本,然后子模塊進行引用即可
報錯信息:
java.lang.NoSuchMethodError:
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)Lcom/fasterxml/jackson/core/type/WritableTypeId;
原因:TypeSerializer.typeId存在於2.9.10高版本中,而項目中默認是2.8.1,需要升級jar版本
3,某個方法不存在
jar包版本問題
根據具體的類和方法找到具體的jar版本,然后引入
錯誤信息:
java.lang.NoSuchMethodError:
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)Lcom/fasterxml/jackson/core/type/WritableTypeId;
解決:根據具體的類和方法找到具體的jar版本,然后引入
錯誤信息:
java.lang.NoSuchMethodError:
io.netty.util.concurrent.SingleThreadEventExecutor.<init>(Lio/netty/util/concurrent/EventExecutorGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;
Lio/netty/util/concurrent/RejectedExecutionHandler;)V
解決:https://www.jianshu.com/p/bb3718226f36
4,某個類不存在
jar包版本問題
根據具體的類找到具體的jar版本,然后引入
錯誤信息:
java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge