解决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

 

posted @ 2020-06-10 01:00  wanhua.wu  阅读(2207)  评论(0编辑  收藏  举报