當前位置: 妍妍網 > 碼農

效率拉滿,開發一款可直接編輯 jar 包的IDEA外掛程式

2024-06-03碼農

作者:鷹影
連結:https://juejin.cn/post/7368753329666605119

# 前言

IDEA內建的反編譯外掛程式能開啟jar反編譯 class,遺憾的是不能編輯 class,有的時候我們需要修改jar包內 class,需要解壓->反編譯 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,大於等於這個版本均可安裝使用。

    熱門推薦