1 maven出现依赖冲突的情况
(1) 传递依赖导致不同版本jar包冲突,maven采用就近原则排除了依赖路径比较远的jar
1)如果排除的是旧版本的jar包,而调用的方法是最有新jar中才有的,这样就会报错,一般是ClassNotFound这类的错误
(2) 不同的jar包,出现了相同的类路径
1)这种情况,jvm会加载第一个找到的类,找到的类恰好不是你需要的jar里面的类,例如找到了其他jar包中依赖的同名类,运行的时候就会存在找不动你要调用的方法,因为其他jar包的同名类中没有这个方法,如下提示类似这样的错误,这种错误是运行时才会报错
java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
(3)集成axis出现的问题,依赖的jar包是搞版本的,没有低版本的方法,例如axis依赖的日志包就和spring-jcl依赖的日志包有差别,需要把spring-jcl中的日志包排除掉
2 jar包冲突的解决方案
(1) idea可以安装 Maven Helper插件,帮组分析出现冲突的jar包
(2) 使用ctrl+shift+alt+n 查找类路径所在的jar包,把对应的jar包在pom中排除
3 maven 没有依赖冲突,但是idea左侧maven目录报红