2009-09-06 19 views
31

Javaクラスをバッチ逆コンパイルするプログラムを探しています。私はJADを見つけましたが、Javaの新機能をサポートしていませんでした。このプログラムの利点は、コマンドラインから実行して* .javaファイルを自動的に生成できることです。JD-GUIによるJavaファイルのバッチ逆コンパイル

また、JD-GUIも見つかりました。 Javaのほとんどの機能をサポートしていますが、バッチ処理ができないという欠点があります。プログラムでクラスファイルを開き、[保存]をクリックする必要があります。

JADのようにJD-GUIをバッチ処理する方法はありますか?

答えて

48

JD-GUIのコマンドライン逆コンパイルはhighly requested機能ですが、まだ実装されていません。おそらく、次の回避策をその間に使用することができます。

  1. デコンパイルするすべてのクラスをjar(またはzip)します。
  2. JD-GUIを起動し、jar(zip)アーカイブを開きます。
  3. 「ファイル」 - 「JARソースの保存」メニューオプションを使用します。アーカイブからすべてのクラスを逆コンパイルし、ソースを別のzipファイルに保存します。

残念ながら、私はコマンドラインをサポートしているオープンソースのJD-GUIの代替案を見たことがありませんでした。

+10

(「^」は複数行は、Windowsでコマンドを実行するためだけのトリックであることに注意してください) jd-core-java –

+1

これも有望です(実際にはRob Wによる前述のフォークのフォークです)、ライブラリも提供します。私はまだそれをテストしていません:https://github.com/kwart/jd-cmd – ozeebee

+0

ホームページにはドラッグアンドドロップ逆コンパイラがあります。その意味を知っています...;) –

3

JadRetroとJadを併用することをお勧めします。もちろん、JadはJavaジェネリックを生成できませんが、逆コンパイルされたソース(Java 1.5+クラスを含む)は機能的にオリジナルと同等です症例)。
その使用が簡単です:

jadretro * .classファイル
JADの.class

注:
1. JadRetroは次のようにバッチモードで使用することができる。あなたの場合はjadretro ...
2 (最新のv1.5.8gではなく)jad v1.5.8eを使用している場合、 "-c"オプションをjadretroに渡す必要があります。そうしないと、jadはJava 1.5+クラスの逆コンパイルを拒否します。

1

コマンドラインを使用してGUIを一度に起動し、各タブでCtrl + Alt + Ctrl + Wを押すと、すぐに保存/閉じることができます。それは自動化されていませんが、依存関係の逆コンパイル時には許容されます。 https://github.com/nviennot/を参照してください - 私はちょうどJDを使用してCLIのラッパーを発見した

"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 
関連する問題