web-dev-qa-db-ja.com

JD-GUIを使用したJavaファイルのバッチ逆コンパイル

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

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

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

32
MemoryLeak

JD-GUIのコマンドライン逆コンパイルは 強く要望されている 機能ですが、まだ実装されていません。当面は、次の回避策を使用できます。

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

残念ながら、コマンドラインサポートを備えた優れたオープンソースのJD-GUIの代替案は見たことがありません。

51
ChssPly76

JadRetro と組み合わせてJadを使用することをお勧めします。もちろん、JadにJavaジェネリックを生成させることはできませんが、デコンパイルされたソース(Java 1.5+クラス)は、元の機能と機能的に同等です(ほとんどの場合、コンパイル可能です)。
使い方は簡単です:

jadretro * .class
ジャド。クラス

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

3
ivmai

コマンドラインを使用して一度にライブラリ全体でGUIを起動し、各タブを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
1
Ryan

ファイル>すべてのソースを保存すると、すべてのファイルがホームディレクトリに保存されます。

1
Esther