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