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

简介: 检测项目中所有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之外,还有其他的两个包中含有这个文件,之后解决文件冲突之后在运行项目测试

1.png

相关文章
|
20天前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
5月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
2月前
|
Java 开发者
修改JAR文件工具
本文介绍了一款名为JarEditor的IDEA插件,该插件允许用户直接对JAR包内的文件进行增删改查操作,无需先行解压。通过简单的安装与使用步骤,大大简化了传统上需要解压缩、反编译、重新编译及打包的过程。此外,JarEditor还支持对混淆过的JAR文件进行字节码级别的修改,并提供了强大的搜索功能,支持大小写、全词匹配和正则表达式搜索。对于开发者而言,这款插件无疑极大提高了处理JAR文件的效率和便捷性。
104 14
|
2月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
266 3
|
3月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
808 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
3月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
1492 1
|
5月前
|
Java
Java系列之 解决 项目 jar 包无法上传到Github
该博客文章介绍了解决Java项目中jar包无法上传到Github的问题,通过修改`.gitignore`文件来包含jar包,从而成功添加到上传目录。
Java系列之 解决 项目 jar 包无法上传到Github
|
5月前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
5月前
|
SQL 前端开发 Java
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
这篇文章介绍了如何在IntelliJ IDEA中使用Maven将Spring Boot项目打包成可运行的jar包,并提供了运行jar包的方法。同时,还讨论了如何解决jar包冲突问题,并提供了在IDEA中同时启动Vue前端项目和Spring Boot后端项目的步骤。
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
|
5月前
|
Java Shell
Java Sprintboot jar 项目启动、停止脚本
Java Sprintboot jar 项目启动、停止脚本
45 0