如何解决多版本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系统升级与迁移的完整指南

    Java系统升级与迁移的完整指南

    在Java生态中,系统升级和迁移是开发者必须面对的“成人礼”,从JAR地狱到模块化战争,从Java 8到Java 17的版本跳跃,每一次升级都伴随着技术债的清算、架构的重构和性能的飞跃,所以本文给大家介绍了Java系统升级与迁移的完整指南,需要的朋友可以参考下
    2025-08-08
  • Java Socket 编程详解

    Java Socket 编程详解

    Java Socket 编程是指使用 Java 语言进行网络通信的过程,包括建立连接、传输数据和关闭连接等操作,本文将详细介绍Java Socket编程,需要的朋友可以参考下
    2023-05-05
  • Java给实体每一个字段赋默认值详细代码示例

    Java给实体每一个字段赋默认值详细代码示例

    这篇文章主要给大家介绍了关于Java给实体每一个字段赋默认值的相关资料,在编程过程中有时会出现这样一种情况,在查询无结果时我们需要给实体赋默认值,需要的朋友可以参考下
    2023-09-09
  • Java Array与ArrayList区别详解

    Java Array与ArrayList区别详解

    这篇文章主要介绍了Java Array与ArrayList区别详解的相关资料,需要的朋友可以参考下
    2017-01-01
  • Java详解如何将excel数据转为树形

    Java详解如何将excel数据转为树形

    在平常的办公工作中,excel数据的操作是最常见的需求,今天就来看一下通过Java如何来实现将excel数据转为树形,感兴趣的朋友可以了解下
    2022-08-08
  • Java连接Redis全过程讲解

    Java连接Redis全过程讲解

    这篇文章主要介绍了Java连接Redis全过程讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java集合框架中迭代器Iterator解析

    Java集合框架中迭代器Iterator解析

    这篇文章主要为大家简单介绍了Java集合框架中迭代器Iterator的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • SpringBoot Event实现异步消费机制的示例代码

    SpringBoot Event实现异步消费机制的示例代码

    这篇文章主要介绍了SpringBoot Event实现异步消费机制,ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • Java获取本机IP地址的方法代码示例(内网、公网)

    Java获取本机IP地址的方法代码示例(内网、公网)

    在IT领域获取本机IP地址是一项基础但重要的任务,特别是在网络编程、远程协作和设备通信中,这篇文章主要给大家介绍了关于Java获取本机IP地址的方法(内网、公网),需要的朋友可以参考下
    2024-07-07
  • 浅谈@Value和@Bean的执行顺序问题

    浅谈@Value和@Bean的执行顺序问题

    这篇文章主要介绍了@Value和@Bean的执行顺序问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论