用Swing寫了一個Class編輯器:ClassEditor

localhost02發表於2019-04-19

一、它是什麼?

顧名思義,它是一個用來編輯位元組碼的簡單的小工具。

二、它能幹嘛?

位元組碼編輯器?據我所知,修改位元組碼相當麻煩。一般情況下,我們需要:

  1. 將 jar 包用 JD-GUI 等工具,將所有 Class 檔案全部反編譯成 Java 檔案;
  2. 外網安裝 Idea,將該Java專案拖到 Idea;
  3. 解決各種 Maven 依賴,但有些依賴在內網 Maven 倉庫(common-parent.pom、common-project、HbaseService、KafkaService等),故下載失敗,且解決較困難;
  4. 編輯相關程式碼,執行 mvn package,得到新 jar 包。

目前來看,修改 jar 包的確比較麻煩。因此,花了點時間,寫了一個簡陋的小工具,解決在現網上無法即時編輯 class 的問題。

注意,它用來解決一些較簡單、易修改的需求,如果較複雜、涉及程式碼較多,還請繞道……(∩_∩)

三、怎麼使用?

1、執行環境

JDK1.5+ (現網一般都有這個環境吧)

2、使用方法

  • 執行 ClassEditor.exe
    用Swing寫了一個Class編輯器:ClassEditor
  • 填寫:Jar包位置
  • 填寫:Class類名(全路徑)
  • 選擇:操作的物件,支援欄位和方法
    用Swing寫了一個Class編輯器:ClassEditor
  • 選擇:操作的型別
    用Swing寫了一個Class編輯器:ClassEditor
    在這裡插入圖片描述
  • 生成Class檔案,Class檔案會生成在Jar包所在路徑。

最後,使用 7Z 等壓縮工具,將該Class檔案覆蓋原Class檔案即可!(注意覆蓋之前,儘量備份原 Jar 包)

3、使用場景

  • 修改三方庫jar包的原始碼|破解軟體(如Gson的某BUG:反序列化Map時,int轉double問題,解決思路即使用本工具修改某處原始碼即可,詳見:連結
  • 某些全域性控制開關(可能是一個Boolean型別的全域性變數),由於沒有配置在配置檔案,但是急需修改其開關狀態;
  • 由於沒有對某段程式碼進行 try catch,導致執行時異常,程式假死/退出,需要馬上捕獲異常;
  • 方法內某段程式碼邏輯有問題,需要修改;
  • 急需列印某些物件;
  • 急需監控某方法/程式碼的執行時間
  • 其他……

4、注意事項

  • 不支援泛型等語法糖,編寫程式碼時請去泛型
  • Class檔案的每次修改都是在上次修改的基礎上進行,如需重置,請重啟程式;
  • 如果編寫的程式碼,點選:生成Class檔案時提示:CannotComileException:[source error] no such class:xxx,不要慌,只需在編輯框中使用import匯入相關Class即可:
    用Swing寫了一個Class編輯器:ClassEditor

四、下載地址

連結:download.csdn.net/download/lo…

相關文章