Java替換jar包中class文件的完整步驟記錄
在更新java應用版本的運維工作中,由于一些原因,開發(fā)沒辦法給到完整的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步的路徑下(替換前備份原文件)
這里更換名字的方法模擬這一步,實際生產環(huán)境操作按需要放進新的文件
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
附:jar包如何使用命令替換class文件
話不多說,直接上命令:
# 1.檢索文件 jar -tvf Test-0.0.1-SNAPSHOT.jar | grep Test.class # 2.取出文件 jar -xvf Test-0.0.1-SNAPSHOT.jar BOOT-INF/classes/com/test/Test.class #3.替換文件 mv Test.class BOOT-INF/classes/com/test/Test.class #4.打入jar包 jar -uvf Test-0.0.1-SNAPSHOT.jar BOOT-INF/classes/com/test/Test.class #5.刪除冗余文件 rm -r BOOT-INF
腳本文件:
updateClass.sh
#!/bin/bash # 動態(tài)部署class腳本 className=`ls|grep .class$` jarName=`ls|grep .jar$` if [ -z $className ] then echo "No class file found." exit 1 fi if [ -z $jarName ] then echo "No jar file found." exit 1 fi echo "The $className is replacing..." fullPath=`jar -tvf $jarName | grep "/$className" | awk '{print $NF}'` jar -xvf $jarName $fullPath mv $className $fullPath jar -uvf $jarName $fullPath rm -r BOOT-INF
總結
到此這篇關于Java替換jar包中class文件的文章就介紹到這了,更多相關Java替換jar包class文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring?Boot解決循環(huán)依賴的過程詳細記錄
這篇文章主要介紹了Spring?Boot解決循環(huán)依賴的過程,Spring框架通過三級緩存機制解決循環(huán)依賴問題,分別為singletonObjects、earlySingletonObjects和singletonFactories,需要的朋友可以參考下2024-09-09如何在?Spring?Boot?中使用?OpenAI?ChatGPT?API
這篇文章主要介紹了如何在Spring?Boot中使用OpenAI?ChatGPT?API,我們探索了 OpenAI ChatGPT API 以生成對提示的響應,我們創(chuàng)建了一個 Spring Boot 應用程序,它調用 API 來生成對提示的響應,需要的朋友可以參考下2023-08-08@RequestMapping 如何使用@PathVariable 從URI中獲取參數
這篇文章主要介紹了@RequestMapping 如何使用@PathVariable 從URI中獲取參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08