修改jar包內的class

weixin_33850890發表於2018-06-13
作者 時間 qq
劉權 20180613 653945222

原因

由於要修改現場的一個jar包,但是現場沒有專案的編譯環境

方案一:通過反編譯工具獲取java檔案,再通過java將class打包到jar包中

  1. 使用反編譯工具JD-GUI開啟jar包
  2. 找到要修改的類
  3. FIle->save(儲存class的java檔案)
  4. 使用文編編輯器修改java檔案,並儲存
  5. 將java檔案放入對應的包路徑下
  6. 執行javac -cp xx.jar com\epri\service\HelloService.java,生成對應的class檔案
  7. 將class打包到jar包
    方案一:使用命令: jar -uvf xx.jar com\epri\service\HelloService.class
    方案二:使用解壓工具開啟jar包,然後將class放入對應位置替換原class即可。

相關問題:

  1. 如果依賴的包為多個。
  • 多個依賴的JAR包,LINUX下用“:”分割,WINDOW下用“;”分割
  • 多個原始檔用空格分隔,也可以使用諸如“*”之類的萬用字元

例:

javac -cp D:\Desktop\test.jar;D:\software\android\sdk\platforms\android-27\android.jar test1.java test2.java
或
javac -cp D:\Desktop\test.jar;D:\software\android\sdk\platforms\android-27\android.jar *.java
  1. javac編譯錯誤: 編碼UTF8/GBK的不可對映字元
  • 確定java檔案的編碼
  • 在編譯時指定編碼:javac編譯錯誤: 編碼UTF8/GBK的不可對映字元
    例:
javac  -encoding utf-8  -cp  xx.jar com\epri\service\HelloService.java

參考文獻:

https://blog.csdn.net/Leytton/article/details/52740171
https://blog.csdn.net/chy555chy/article/details/78460837
https://blog.csdn.net/foxfire882/article/details/70513642

相關文章