注:
目的是提供maven依赖jar包冲突的解决思路
需求场景:
jackson-databind、fastjson 高危远程代码执行漏洞修复。Jackson-databind,版本号升级为2.10.3;fastjson,版本号升级为1.2.66
问题描述:
对需求中提到的2个工具包进行版本升级后,出现很多找不到方法的报错,比如:
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge
问题排查:
1、是否方法对应的jar包未引入?
通过查看得知,提到“找不到的方法”来自包jackson-databind,而在maven的依赖架构中可以看到,该jar包已经存在,但是仔细一看,问题浮现眼前
2、上述问题极有可能是版本冲突导致
根据上图可以看到,已经更新了jackson-databind的版本为2.10.3,但是由于引入了其他jar包,其他jar包又依赖了jackson-databind等json工具相关包,版本是2.4.1
尝试解决:
1、排除resteasy-jackson2-provider包中json工具相关包的依赖,并重新显示引入2.10.3版本的jar包。
如下:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<exclusions>
<exclusion>
<artifactId>jackson-databind</artifactId>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
<exclusion>
<artifactId>jackson-core</artifactId>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
<exclusion>
<artifactId>jackson-annotations</artifactId>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
<exclusion>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.10.3</version>
</dependency>
2、再次查看maven依赖架构(eclipse)
发现版本都变成统一的2.10.3了。
重启应用,问题不再,运气真好!
附:
查看maven依赖架构,打开工程的pom.xml,选择第3个标签,如下图: