2009-09-06 44 views
31

我正在查找批量反編譯Java類的程序。我發現了JAD,但它不支持Java的一些新功能,而且此程序的好處是它可以從命令行執行並自動生成* .java文件。使用JD-GUI對Java文件進行批量反編譯

我還找到了JD-GUI。它支持Java的大部分功能,但缺點是它不能進行批處理。您需要使用該程序打開該類文件,然後單擊保存。

有沒有辦法讓JD-GUI做像JAD一樣的批處理?

回答

48

JD-GUI的命令行反編譯功能是highly requested功能,但尚未實現。也許您可以在此期間使用以下解決方法:

  1. jar(或zip)您想要一起反編譯的所有類。
  2. 啓動JD-GUI並打開您的jar(zip)存檔。
  3. 使用「文件」 - 「保存JAR源」菜單選項。它會反編譯你檔案中的所有類,並將它們的源碼保存到另一個zip文件中。

不幸的是,我還沒有看到任何具有命令行支持的良好開源JD-GUI替代方案,所以我認爲上述方法和現在一樣好。

+10

我剛剛發現,使用JD一個CLI包裝 - 看到https://github.com/nviennot/ jd-core-java – 2013-08-01 22:39:22

+1

這也看起來很有前途(實際上它是Rob W提到的一個分支),它也提供了一個庫;但我還沒有測試過,但:https://github.com/kwart/jd-cmd – ozeebee 2014-02-12 15:34:43

+0

該主頁現在有一個拖放式反編譯器。你知道這意味着什麼...;) – 2014-02-21 16:11:23

3

我可以推薦將Jad與JadRetro結合使用 - 當然,它不能使Jad生成java泛型,但反編譯的源代碼(包括Java 1.5+類)在功能上與原始代碼相同(並且可以在大多數例)。
它的使用方法很簡單:

jadretro的* .class
JAD的.class

注:
1. JadRetro可以在批處理模式下這樣使用:jadretro ...
2.如果您正在使用jad v1.5.8e(而不是最新的v1.5.8g),則應將「-c」選項傳遞給jadretro(否則jad將拒絕對Java 1.5+類進行反編譯)。

1

看起來您可以使用命令行一次啓動一大堆庫,然後使用CTRL + ALT + s/CTRL + w快速保存/關閉每個選項卡。它不是自動的,但反編譯一堆依賴時可以容忍。 (請注意,「^」僅僅是做多線路在Windows命令一招。)

"c:\jd-gui-0.3.6.windows\jd-gui.exe"^
c:\my-libs\lib-a.jar^
c:\my-libs\lib-b.jar^
c:\my-libs\lib-c.jar^
c:\my-libs\lib-d.jar^
c:\my-libs\lib-e.jar