Java 中针对包冲突,如何重构包名,让不同版本并行存在?

目录

背景

解决方案

技术分析

应用场景

特点

案例


背景

在实际工作中,我们可能会跟不同的厂商对接接口,那不同的厂商所提供的 SDK 包经常会遇到不同版本的 Jar 冲突,当你想统一用某一个版本时,发现又难以统一,有些 api 只能在特定包版本存在和运行,那这个时候,我们可以强行指定代码里用某个特定版本。

解决方案

用到了一个包重构的工具 Jar https://download.csdn.net/download/weixin_36754290/89649194https://download.csdn.net/download/weixin_36754290/89649194

JarJar是一个基于命令行的工具,其主要任务是处理.jar文件中的类,执行类的移动、复制甚至删除操作。它的核心功能包括:

  • 类的重命名(类名、包名)
  • 类的移动(从一个包移到另一个包)
  • 多个.jar文件的合并
  • 删除不必要的类和资源

这些操作可以通过配置文件(通常是XML)定义的一系列规则来完成,使得自动化构建过程更加容易控制。

技术分析

JarJar 利用 Java 字节码操纵库,如ASM或BCEL,直接操作已编译的.class文件。这使得它能在不理解源代码的情况下改变类结构。其工作流程如下:

  • 读取输入 - JarJar首先读取所有输入的.jar文件。
  • 解析规则 - 然后,它解析指定的规则文件,理解哪些类需要被如何操作。
  • 处理类 - 对每个输入的.class文件,根据规则应用相应的操作(重命名、移动等)。
  • 生成输出 - 最终,修改后的类被重新打包成一个新的.jar文件。

应用场景

JarJar的主要应用场景包括:

  • 减少依赖 - 可将多个库整合到单个.jar中,减少部署时的文件数量。
  • 解决命名冲突 - 通过重定位类,避免不同库间的包名冲突。
  • 混淆保护 - 虽然不是专业的混淆工具,但可以作为简单混淆的一种手段。
  • 定制化库 - 根据特定需求,裁剪或修改第三方库的功能。

特点

简单易用 - 配置文件的规则语法直观,易于理解和编写。

灵活性高 - 支持广泛的类操作,满足各种场景的需求。

跨平台 - 作为Java工具,可以在任何支持Java运行环境的平台上运行。

开放源代码 - 开放源代码,社区活跃,可自由扩展和贡献。

一个灵活的 Java 类重组工具

GitCode - 全球开发者的开源社区,开源代码托管平台

案例

这里我要重构 bcprov-jdk16-1.46.jar 为自定义的 v-bcprov-jdk16-1.46.jar

1、下载 jarjar 工具类https://download.csdn.net/download/weixin_36754290/89649194,这个链接是我自己在用的一个工具类。

2、创建一个rule.txt文件,指定重命名的规则,内容如下:

bash 复制代码
rule org.bouncycastle.** vingsoft.bouncycastle.@1

上面规则代表:会把所有类的包名 org.bouncycastle. 替换为 vingsoft.bouncycastle。

3、使用jarjar命令行工具应用规则并创建重构后的jar包。

bash 复制代码
java -jar jarjar-assembly-1.14.0.jar process rule.txt bcprov-jdk16-1.46.jar v-bcprov-jdk16-1.46.jar

命令行解读:

bcprov-jdk16-1.46.jar :你要重构的jar

v-bcprov-jdk16-1.46.jar:重构之后的新包名

相关推荐
金融小师妹14 小时前
AI趋势识别:黄仁勋宣布“AGI时代”到来,Astra能力跃迁背后的AI安全边界
大数据·python·深度学习·重构·逻辑回归
jinggongszh1 天前
一次在线用户迁移,为何牵出登录冲突、实时通知、异常清理三场重构?
重构·在线用户迁移·会话活跃性·登录冲突·实时通知·异常清理
进击的横打1 天前
【人工智能】AI时代公司组织架构的重构
大数据·人工智能·重构
明航咨询_贾老师1 天前
AI智能体供应链投毒事件深度剖析|从OpenClaw技能包攻击到91% Agent漏洞,企业安全架构必须重构
人工智能·重构·安全架构
夜勤月2 天前
VMware Workstation Pro 26H1正式版实测:全64位架构重构+免费商用,这些升级直接影响开发效率
重构·架构
上海锝秉工控2 天前
告别单点检测误判:多点式激光传感器如何重构工业质检精度
人工智能·重构
数字供应链安全产品选型2 天前
深度长文|AI 重构软件供应链:从传统开源风险到智能体时代的数字安全治理
人工智能·重构·开源
lifallen2 天前
短暂 Agent 与持久化工程:让理解脱离对话
人工智能·学习·ai·重构·ai编程
CET中电技术2 天前
预付费电表计费系统是什么?云综能Lite如何重构水电费管理?
人工智能·物联网·重构
数字孪生视频孪生2 天前
三维实时重构异构底座 核工危化无感定位跨境轨迹一屏统揽
大数据·运维·人工智能·重构·架构