在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件,重新启动服务即可:
1、将jar包和将要替换的class文件放到同一个目录下;
2、查找jar包中xxxdemo.class文件所在的具体路径
jar -tvf xxx.jar | grep xxx.class
3、将xxx.jar中指定的xxx.class解压出来
jar -xvf xxx.jar xxx/xxx/xxx/xxx/xxx/xxx.class(路径为第2步的路径结果)
4、将新的xxx.class文件放到第3步的路径下(替换前备份原文件)
这里更换名字的方法模拟这一步,实际生产环境操作按需要放进新的文件
5、重新打包jar
jar -uvf xxx.jar xxx/xxx/xxx/xxx/xxx/xxx.class(路径为第2步的路径结果)
查看jar包里的文件已经是新文件(如果是一样名字的会被覆盖处理):
6、重启使用该jar包应用(如有需要)。
7、替换jar包中的jar文件
前2个查找查找步骤同上,最后一步略有不同。如:
jar -uvf0 abc.jar BOOT-INF/lib/a.jar
##使用的是-uvf0而是不是-uvf