前言
IDEA自帶的反編譯外掛能開啟jar反編譯class,遺憾的是不能編輯class,有的時候我們需要修改jar的時候還需要解壓,反編譯class,然後新建.java,修改程式碼,再編譯,最後打包jar。
我敢說中間的過程你肯定不是一氣呵成的,如果jar有依賴還要花時間去排查,打包的時候還需要注意編譯jdk的版本,有的命令忘了的話還需要查手冊,其實基本上全是體力活。
我翻遍了IDEA外掛市場並沒有找到合適的直接編輯jar的外掛,於是我打算簡單花點時間寫一個這樣的外掛JarEditor,可以實現無需解壓直接編輯jar內的檔案。
功能介紹
首先IDEA可以反編譯jar,在jar內的class是可以直接開啟看到反編譯程式碼的,外部檔案可以透過File->Project Structure->Libraries新增依賴然後反編譯jar。
使用介紹
在外掛市場安裝外掛JarEditor後,可以在.class反編譯檔案中看到一個切換到Jar Editor的tab頁
點選Jar Editor後可以直接對反編譯的程式碼進行修改,修改完之後點選Save/Compile會編譯當前修改的java內容並儲存,然後點選Build Jar即可將編譯儲存的class檔案寫入到Jar包內。
這樣編輯一個Jar包內class檔案一氣呵成無需解壓也無需去敲命令。
修改jar包內的資原始檔也是支援的,流程和class檔案是一樣的,也是修改完要儲存,然後再Build Jar即可。
在jar包的工程展示圖,任意檔案右鍵,可以看到JarEditor的New和Delete操作,可以新增檔案和刪除檔案
一些機制
編譯依賴的JDK是專案工程的JDK,可以選擇編譯的class目標版本,預設和jar包的class版本保持一致
編譯java的時候依賴的classpath就是工程專案的依賴,如果依賴包找不到可以新增依賴
Save/Compile會將修改的檔案儲存到jar包所在目錄的jar_edit子目錄下,Build Jar會把會jar_edit目錄的檔案增量寫入jar,最後再刪除這個目錄
總結
此IDEA外掛JarEditor可無需解壓直接編輯jar包內class和資原始檔,感興趣的朋友可以去試試。
原始碼地址:
https://github.com/Liubsyy/JarEditor
依賴IDEA最低版本為IDEA2020.3,大於等於這個版本均可安裝使用。
來源:juejin.cn/post/7368753329666605119