Java替换jar包中class文件

在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件,重新启动服务即可:

1、将jar包和将要替换的class文件放到同一个目录下;

2、查找jar包中xxxdemo.class文件所在的具体路径

bash 复制代码
jar -tvf xxx.jar | grep xxx.class

3、将xxx.jar中指定的xxx.class解压出来

bash 复制代码
jar -xvf xxx.jar  xxx/xxx/xxx/xxx/xxx/xxx.class(路径为第2步的路径结果)

4、将新的xxx.class文件放到第3步的路径下(替换前备份原文件)

这里更换名字的方法模拟这一步,实际生产环境操作按需要放进新的文件

5、重新打包jar

bash 复制代码
jar -uvf  xxx.jar xxx/xxx/xxx/xxx/xxx/xxx.class(路径为第2步的路径结果)

查看jar包里的文件已经是新文件(如果是一样名字的会被覆盖处理):

6、重启使用该jar包应用(如有需要)。

7、替换jar包中的jar文件

前2个查找查找步骤同上,最后一步略有不同。如:

bash 复制代码
jar -uvf0 abc.jar BOOT-INF/lib/a.jar
##使用的是-uvf0而是不是-uvf
相关推荐
小杨4044 分钟前
架构系列二十三(全面理解IO)
java·后端·架构
程序员鱼皮36 分钟前
2025 年最全Java面试题 ,热门高频200 题+答案汇总!
java·后端·面试
爱笑的Sunday40 分钟前
【LeetCode 题解】算法:15.三数之和
java·数据结构·算法·leetcode
爱编程的王小美44 分钟前
srpingboot-后端登录注册功能的实现
java·数据库·sql
该怎么办呢1 小时前
原生android实现定位java实现
android·java·gitee
没差c1 小时前
处理json,将接口返回的数据转成list<T>,和几个时间处理方法的工具类
java·json·list
Hanson Huang1 小时前
23中设计模式-迭代器(Iterator)设计模式
java·设计模式·迭代器模式·行为型设计模式
天草二十六_简村人1 小时前
Rabbitmq消息被消费时抛异常,进入Unacked 状态,进而导致消费者不断尝试消费(下)
java·spring boot·分布式·后端·rabbitmq
低头不见2 小时前
Spring Boot 的启动流程
java·spring boot·后端
小码农<^_^>2 小时前
linux环境变量
java·linux·运维