检测项目中所有jar包中相同文件冲突

当项目中有你指定的jar包,但是其他引进的依赖中也有可能包含这个jar包,由于版本对不上可能会导致项目出问题

例如:一个gson中一个jar包中的JsonObject文件中没有keySet()

## Failed to execute plan for region: cn-neimeng-env86-d01, cause: com.google.gson.JsonObject.keySet()Ljava/util/Set;
java.lang.NoSuchMethodError: com.google.gson.JsonObject.keySet()Ljava/util/Set;
        at com.aliyuncs.endpoint.LocalConfigRegionalEndpointResolver.initRegionalEndpointData(LocalConfigRegionalEndpointResolver.java:41)
        at com.aliyuncs.endpoint.LocalConfigRegionalEndpointResolver.initLocalConfig(LocalConfigRegionalEndpointResolver.java:30)
        at com.aliyuncs.endpoint.LocalConfigRegionalEndpointResolver.<init>(LocalConfigRegionalEndpointResolver.java:20)
        at com.aliyuncs.endpoint.DefaultEndpointResolver.<init>(DefaultEndpointResolver.java:31)
        at com.aliyuncs.endpoint.DefaultEndpointResolver.<init>(DefaultEndpointResolver.java:52)
        at com.aliyuncs.DefaultAcsClient.<init>(DefaultAcsClient.java:61)
        at com.aliyuncs.DefaultAcsClient.<init>(DefaultAcsClient.java:49)
        at com.aliyun.ecm.admin.runjob.spi.context.impl.DefaultRunjobContext.getIAcsClient(DefaultRunjobContext.java:68)
        at com.aliyun.ecm.admin.runjob.core.executor.impl.PlanExecutorManagerImpl.execute(PlanExecutorManagerImpl.java:130)
        at com.aliyun.ecm.admin.runjob.cli.executors.impl.ExecutePlanExecutor.doExecute(ExecutePlanExecutor.java:98)
        at com.aliyun.ecm.admin.runjob.cli.executors.impl.ExecutePlanExecutor.doExecute(ExecutePlanExecutor.java:28)
        at com.aliyun.ecm.admin.runjob.cli.executors.CliCommandExecutorBase.execute(CliCommandExecutorBase.java:36)
        at com.aliyun.ecm.admin.runjob.cli.CliMain.execute(CliMain.java:68)
        at com.aliyun.ecm.admin.runjob.cli.CliMain.go(CliMain.java:100)
        at com.aliyun.ecm.admin.runjob.cli.CliMain.main(CliMain.java:133)

排查问题:

1、排查自己的gson版本,查看项目文件中的lib中的jar包

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>
#进入到项目的lib路径下查看gson版本
ls -lht | grep gson
#解压jar包 例 2.8.5版本
unzip gson-2.8.5.jar
#进入到解压的文件夹下
cd com/google/gson/
#反编译里面的JsonObject.class文件,查看里面是否有这个方法
javap JsonObject.class
#如果有可能是和其他jar包中包含的gson冲突了,需要用第二步进行排查,如果没有就是这个jar没有这个方法需要做版本改动

 

2、检查lib路径下所有的jar包,包含此冲突文件的操作

 for j in `ls ./*`; do echo "##> $j";  jar vtf $j | grep JsonObject; done

出现如下的问题,除了gson包中含有的JsonObject.class之外,还有其他的两个包中含有这个文件,之后解决文件冲突之后在运行项目测试

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力不竭!!!战不止!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值