在更新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