1、本文檔要解決的問題
Beyond Compare是一款文件差異比較軟件,java開發的時候,有時候涉及到把class文件反編譯查看源碼的需求。但是有時候進行class文件反編譯成源碼的時候會出現以下異常
出現這個問題的原因是因爲反編譯的插件底層是使用jad.exe進行反編譯的,jad.exe對高版本的jdk支持的不是很好。
2、插件下載
登錄官網:http://www.scootersoftware.com/download.php?zz=kb_moreformatsv4 找到如下的插件,勾選之後進行下載。
上面的插件下載安裝之後,就可以對class文件進行反編譯了。但是有個問題,就是上面提到的,對高版本的jdk支持不友好,編譯有問題。
3、插件修改
我們把下載下來的BCFormats.bcpkg插件使用WinRAR軟件打開,打開之後發現裏面的內容如下
打開CLASS_to_JAVA.bat查看內容如下:
從這裏可以發現,這個就是調用jad.exe對 class 文件進行反編譯,反編譯之後的原始內容通過重定向輸出流到軟件中展示出變異之後的內容,所以從這裏我們就可以知道,如果有一個工具可以通過命令行的形式把class文件進行反編譯,則我們就可以用這個工具替換jad.exe。幸運的是,procyon-decompiler就是這麼一個既支持高版本的jdk又可以通過命令行的形式進行class文件反編譯的工具。
4、使用procyon-decompiler代替jad
首先我們下載procyon-decompiler,插件下載地址:https://bitbucket.org/mstrobel/procyon/downloads/。下載下來之後是一個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從新安裝一下插件,就可以正常進行反編譯操作了。
修改後的插件下載地址
https://download.csdn.net/download/Readiay/12385669