解決jar包沖突問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM