Javaのclassファイルをデコンパイルしてソースを確認する方法(Java Decompiler・eclipse編)

Javaのclassファイルをでコンパイルして確認したい時に利用できる方法です。

Javaのeclipseでデバッグをしている時、なんだか振る舞いが想定と違う場合があります。

自分で書いたソースだと、不具合が発生している部分が特定しやすいですが、jarライブラリを利用していると、どこで不具合を生じているのか、検証しにくい場合があり、ソースを閲覧してみたい場合があります。

通常、classファイルをeclipseでダブルクリックしても、ソースを見ることはできません。

そんな時には、Javaのデコンパイル可能なモジュールをセットアップすることで、ソースを見ることができるようになります。

どのJavaのデコンパイラを使うか

一昔前までは、「Jad」というプロジェクトが有名だったのですが、開発がストップしており、javaのバージョン1.5以上だと、対応していません。

また、一時期有名だった、「Eclipse Class Decompiler」にはマルウェア混入の話もあり、安心して使えないといった事情もあります。

今は、「Java Decompiler」を利用するのが良いようですね。

「Java Decompiler」の公式HPはこちらです。

単体のGUIアプリとしても使えますが、Eclipseのプラグインとしても利用可能ですので、そのセットアップ手順をご紹介します。

EclipseでのJava Decompilerセットアップ手順

eclipse上で、「Help ⇒ Install New Software」をクリックする。

すると、以下のような「Install」ダイアログが開く。

ここで「Add」ボタンを押すと、下記のような「Add Repository」ダイアログが開くので、

Name: JD-Eclipse Update Site(分かりやすい名前で構わない)

Location: http://jd.benow.ca/jd-eclipse/update/

を入力してOKを押す。すると、ここで指定したURLに対してプラグインを探しに行く。

下記のように、「Java Decompiler Eclipse Plug-in」と「JD-Eclipse Plug-in」にチェックを入れて、「Next」ボタンを押す。

ライセンスに合意を促す画面が表示されるので、合意して、「Finish」ボタンで終了する。

以下は、以前の情報なので、上記URLを使えば、エラー無くインストールできると思います。

これでOK!と思ったのですが、下記のようなエラーが出て、失敗してしまいました。

An error occurred while collecting items to be installed
session context was:(profile=SDKProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
Artifact not found: osgi.bundle,jd.ide.eclipse,0.1.3.
http://java.decompiler.free.fr/jd-eclipse/update/plugins/jd.ide.eclipse_0.1.3.jar
Artifact not found: osgi.bundle,jd.ide.eclipse.win32.x86,0.1.3.
http://java.decompiler.free.fr/jd-eclipse/update/plugins/jd.ide.eclipse.win32.x86_0.1.3.jar

確認してみると、このURLにはもう、plug-in用のjarファイルが置かれていないようですね。。

残念。

ということで、本家の「JD-Eclipse」のページにもある、ダウンロードページからzipを落としてきます。

落としたzipを解凍するとできる、「features」と「plugins」フォルダを、Eclipseの同じ名前のディレクトリに上書きし、Eclipseを再起動します。

Window ⇒ Preferences ⇒ Java ⇒ Decompiler

が下のようになっていたら、認識されているので、とりあえずインストールは成功です。

classファイルをダブルクリックすると、デコンパイルされたソースが見れるでしょう。

それでも、何かエラーが出て動かない場合は、こちらの記事を参考ください。