注:
目的是提供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個標籤,如下圖: