如何解决多版本jar包冲突问题

 更新时间:2026年02月07日 09:56:16   作者:花开不识君  
本文介绍了如何通过修改jar包全限定名来解决多版本jar包冲突问题,具体步骤包括:准备jarjar工具和规则文件、将工具和文件放在同一目录下、运行jarjar工具并生成新的jar包,这种方法有效地解决了由于类全限定名冲突导致的jar包不兼容问题

解决多版本jar包冲突问题

在和三方对接的过程中,我们可能会不断引入一些三方jar包

但这个时候就有可能出现一个项目需要依赖两个版本不同且功能不兼容的jar包,本文记录一种方法解决方法

修改jar全限定名

我们知道jvm加载类是通过判断类的全限定名来判断当前类是否被加载

这个导致多版本jar包不兼容的原因,那么我们就从里下手

例子

我们需要将 bcprov-jdk15on-1.65.jar 由原本的org.bouncycastle 替换为shade.bouncycastle

1、准备两个文件

  • jarjar.jar
	    <!--自行把jar下载下来-->
        <dependency>
            <groupId>com.googlecode.jarjar</groupId>
            <artifactId>jarjar</artifactId>
            <version>1.3</version>
        </dependency>
  • rule.txt
rule org.bouncycastle.** shade.bouncycastle.@1

2、放到一个文件下(联同要修改的jar包)

4、运行jarjar

java -jar jarjar-1.3.jar process rule.txt bcprov-jdk15on-1.65.jar shade-bcprov-jdk15on-1.65.jar

5、大公告成

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java中List对象排序通用方法

    java中List对象排序通用方法

    这篇文章主要介绍了java中List对象排序通用方法,涉及java针对List对象的操作技巧,需要的朋友可以参考下
    2015-05-05
  • 解决Springboot启动报错:类文件具有错误的版本61.0,应为 52.0

    解决Springboot启动报错:类文件具有错误的版本61.0,应为 52.0

    这篇文章主要给大家介绍了关于解决Springboot启动报错:类文件具有错误的版本 61.0,应为 52.0的相关资料,这是查阅了网上的很多资料才解决的,分享给大家,需要的朋友可以参考下
    2023-01-01
  • 深入理解Java设计模式之命令模式

    深入理解Java设计模式之命令模式

    这篇文章主要介绍了JAVA设计模式之命令模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
    2021-11-11
  • 关于IDEA的junit单元测试Scanner输入不可用的问题(多种原因分析)

    关于IDEA的junit单元测试Scanner输入不可用的问题(多种原因分析)

    IDEA在Junit测试中使用了Scanner,但是控制台一直转圈,无法输入,eclipse默认可用,其实解决方法很多,今天小编给大家分享多种问题原因分析及解决方法,感兴趣的朋友一起看看吧
    2021-06-06
  • Java上转型和下转型对象

    Java上转型和下转型对象

    这篇文章给大家讲述了Java上转型和下转型对象的详细用法以及相关的代码分享,有兴趣的朋友可以学习下。
    2018-03-03
  • Java之Zookeeper注册中心原理剖析

    Java之Zookeeper注册中心原理剖析

    这篇文章主要介绍了Java之Zookeeper注册中心原理剖析,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Mybatis-plus解决兼容oracle批量插入的示例详解

    Mybatis-plus解决兼容oracle批量插入的示例详解

    Mybatis-Plus 是一个 MyBatis 的增强工具,提供无侵入、损耗小的 CRUD 操作,本文给大家介绍了Mybatis-plus解决兼容oracle批量插入,文中通过大家介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • 详解Java如何使用集合来实现一个客户信息管理系统

    详解Java如何使用集合来实现一个客户信息管理系统

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java 集合实现一个客户信息管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java中的Future获取任务返回值详解

    Java中的Future获取任务返回值详解

    这篇文章主要介绍了Java中的Future获取任务返回值详解,在向线程池ThreadPoolExecutor提交任务时,一般为了方便操作采用execute提交任务,这时线程其实是无返回值的,需要的朋友可以参考下
    2023-12-12
  • Mybatis返回单个实体或者返回List的实现

    Mybatis返回单个实体或者返回List的实现

    这篇文章主要介绍了Mybatis返回单个实体或者返回List的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论