jar包冲突现象及解决办法

1.引入不同版本fastjson的jar包:


	com.alibaba
	fastjson
	1.2.7

另一处再入fastjson的jar,版本不同(项目组的jar,本质上也是alibaba的jar):


	com.****tech
	fastjson
	1.2.29

2.java代码

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

......

List jsonList = JSONArray.parseArray(dataObj).toJavaList(JSONObject.class);

3.在was中运行

maven打包后,其中的jar包:

jar包冲突现象及解决办法_第1张图片

运行报错: 

Caused by: java.lang.NoSuchMethodError: com.alibaba.fastjson.JSONArray.toJavaList(Ljava/lang/Class;)Ljava/util/List;

4.原因

当将1.2.29的依赖从pom中均修改为1.2.7时,toJavaList方法编译无法通过,说明1.2.7版本没有该方法。

也就说明在was运行时,调用的是1.2.7的jar包,而不是1.2.29。

一般以下错误的原因都是jar冲突:

Caused by:java.lang.NoSuchMethodError
Caused by: java.lang.ClassNotFoundException

5.解决办法

此时解决办法是,全部依赖1.2.7的jar包。

代码略做改动:

List jsonList = JSONArray.parseArray(dataObj,JSONObject.class);

 

参考:Maven中 jar包冲突原理与解决办法

 

 

你可能感兴趣的:(maven)