LoginSignup
7
8

More than 5 years have passed since last update.

jadでそれぞれのclassと同じサブディレクトリへデコンパイルする

Last updated at Posted at 2014-05-18

jad で以下のように -r を指定すれば階層を保持したままデコンパイルできます。

jad -8 -s java -d src -r class\**\*.class

この場合、javaファイルに記述されたpackageに従って出力先のフォルダが決まります。

1つのプロジェクトだけデコンパイルを行うのであればそれで問題ありませんが、
調べ事をするために色々な所から無造作にクラスファイルを寄せ集めた場合は
出力先が重なったり、どのjavaファイルがどのクラスファイルの物か分かりづらくなることがあります。

そうした場合は以下のようなバッチ、またはシェルを作ってクラスファイルを寄せ集めたパスを引数に渡すと、
クラスファイルと同じ場所にjavaファイルが作られるため、少しは調査がしやすくなるかもしれません。

Windowsの場合

jad.bat
for /f %%I in ('dir /s /b %1\*.class') DO @jad -8 -s .java -d %%~dpI %%I

Linuxの場合

jad.sh
for classfile in `find "$1" -name "*.class"`
  do
    ./jad -8 -s .java -d `dirname $classfile`/ $classfile
  done

できればクラスファイルをためこんだclassフォルダと同じ場所に
class_srcのような名前のフォルダを作って、その中にclassフォルダ内と同じ
ディレクトリ構造でjavaファイルが出力されるようにしたかったのですが
Windowsの場合の出力先をうまく編集できなかったので分かり次第追記します。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8