1、本文檔要解決的問題
Beyond Compare是一款文件差異比較軟件,java開發的時候,有時候涉及到把class文件反編譯查看源碼的需求。但是有時候進行class文件反編譯成源碼的時候會出現以下異常。出現這個問題的原因是因為反編譯的插件底層是使用jad.exe進行反編譯的,jad.exe對高版本的jdk支持的不是很好
2、原版插件下載
登錄官網 :Beyond 插件下載 找到如下的插件,勾選之后進行下載。插件下載安裝之后,就可以對class文件進行反編譯了。但是有個問題,就是上面提到的,對高版本的jdk支持不友好,編譯有問題。
3、原版插件目錄了解
我們把下載下來的BCFormats.bcpkg插件使用WinRAR軟件打開,打開之后發現里面的內容如下
從這里可以發現,這個就是調用jad.exe對 class 文件進行反編譯,反編譯之后的原始內容通過重定向輸出流到軟件中展示出變異之后的內容,所以從這里我們就可以知道,如果有一個工具可以通過命令行的形式把class文件進行反編譯,則我們就可以用這個工具替換jad.exe。幸運的是,procyon-decompiler就是這么一個既支持高版本的jdk又可以通過命令行的形式進行class文件反編譯的工具。
4、使用procyon-decompiler代替jad
首先我們下載procyon-decompiler,插件下載地址:Procyon插件下載。下載下來之后是一個jar包,我們先學習一下這個jar包怎么用。
java -jar procyon-decompiler-0.5.36.jar Proxy0.class
從這里可以看出,這個工具運行需要本機安裝jdk。作為java開發人員,這個前置需求幾乎可以忽略。我們使用WinRAR打開工具,把jar包拷貝到插件里面。
后我們在編輯 CLASS_to_JAVA.bat
把內容修改成如下內容:
java -jar Helpers\Java\procyon-decompiler-0.5.36.jar %1 > %2
然后Beyond Compare從新安裝一下插件,就可以正常進行反編譯操作了。
5、成果物下載
修改后的插件下載地址:戳這下載修改后的插件