Class文件升级jar包

1、升级条件

确保需要升级的*.class文件已经上传到服务

2、使用命令查找jar包中相应的.class文件

[root@sn-web1 safemgr]# jar tvf xxx.jar | grep DateUtil.class
7009 Wed Dec 30 11:11:34 CST 2020 BOOT-INF/classes/com/xxx/utils/DateUtil.class

3、将第2步中查找到的class文件解压出来

[root@sn-web1 safemgr]# jar -xvf xxx.jar BOOT-INF/classes/com/xxx/utils/DateUtil.class
 inflated: BOOT-INF/classes/com/xxx/utils/DateUtil.class
[root@sn-web1 safemgr]# ll
total 201852
drwxr-xr-x 3 root root      4096 Nov  1 15:30 BOOT-INF  # 这个是解压后得到的
-rwxr-xr-x 1 root root       179 Nov  1 15:19 Dockerfile
-rwxr-xr-x 1 root root       180 Feb 19  2019 restart.sh
-rw-r--r-- 1 root root 103331641 Aug 14 15:39 xxx.jar
drwxr-xr-x 2 root root      4096 Nov  1 15:18 up20211101

4、使用升级的class文件替换解压出来的文件

[root@sn-web1 safemgr]# cp up20211101/DateUtil.class BOOT-INF/classes/com/xxx/utils/
cp: overwrite ‘BOOT-INF/classes/com/xxx/utils/DateUtil.class’? y
[root@sn-web1 safemgr]# 

5、将替换好的class文件压入原来的jar包中

[root@sn-web1 safemgr]# jar -uvf xxx.jar BOOT-INF/classes/com/xxx/utils/DateUtil.class
adding: BOOT-INF/classes/com/xxx/utils/DateUtil.class(in = 7253) (out= 3379)(deflated 53%)
[root@sn-web1 safemgr]# 

6、重启jar

这里的命令就不总结了,大家应该都会