javap(1)

名前
javap - Java クラスファイル逆アセンブラ

形式
javap [ -b ] [ -bootclasspath path ] [ -c ]
[ -classpath path ] [ -extdirs dirs ] [ -help ]
[ -J flag ] [ -l ] [ -package ] [ -private ]
[ -protected ] [ -public ] [ -s ] [ -verbose ]
class . . .

機能説明
javap コマンドは、 Java クラスファイルを逆アセンブルします。 出力内容はオプションで指定します。 オプションを 1 つも指定しないと、 javap は渡されたクラスの package、 protected、 および public フィールドとメソッドを出力します。 javap コマンドの出力先は stdout です。たとえば、以下のクラス宣言をコンパイルします。

    import java.awt.*;
    import java.applet.*;
    public class DocFooter extends Applet {
    		String date;
    		String email;
    		public void init() {
    			resize(500,100);
    			date = getParameter("LAST_UPDATED");
    			email = getParameter("EMAIL");
    		}
    		public void paint(Graphics g) {
    			g.drawString(date + " by ",100, 15);
    			g.drawString(email,290,15);
    		}
    }

この場合、 javap DocFooter を実行すると以下の出力が得られます。
    Compiled from DocFooter.java
    public class DocFooter extends java.applet.Applet {
    	java.lang.String date;
    	java.lang.String email;
    	public void init();
    	public void paint(java.awt.Graphics);
    	public DocFooter();
    }

オプション
以下のオプションが使用できます。

-b  JDK 1.1 の javap との下位互換を保証します。

-bootclasspathpath
    bootstrap クラスをロードするパスを指定します。デフォルトでは、bootstrap クラスはコアとなる Java プラットフォームを実装するクラスで、 jre/lib/rt.jar と jre/lib/charsets.jar にあります。

-c  クラス内の個々のメソッドについて、逆アセンブルされたコード、 すなわち Java バイトコードからなる命令を出力します。詳細は、『Java Virtual Machine Specification』を参照してください。

-classpathpath
    javap がクラスを探すのに用いるパスを path で指定します。この指定値は、デフォルトおよび CLASSPATH 環境変数の設定値をオーバーライドします。 複数のディレクトリを指定する場合はコロン (:) で区切ります。 したがって path の一般形式は次のようになります。

    .:<your_path>

    パスの指定例：

    .:/home/avh/classes:/usr/local/java/classes

-extdirsdirs
    インストールされた拡張機能を検索する場所を指定します。デフォルトの拡張機能の場所は jre/lib/ext です。

-help
    javap のヘルプメッセージを出力します。

-J flag
    実行時システムに直接渡すフラグを指定します。

    example% javap -J-version

    example% javap -JJ-Djava.security.manager \
    -Djava.security.policy=MyPolicy MyClassName

-l  行と局所変数テーブルを表示します。

-package
    package 、 protected 、および public のクラスとメンバだけを表示します。 この指定がデフォルトです。

-private
    すべてのクラスとメンバを表示します。

-protected
    protected および public のクラスとメンバだけを表示します。

-public
    public のクラスとメンバだけを表示します。

-s  内部型シグニチャを出力します。

-verbose
    メソッドのスタックサイズ、および local と arg の数を出力します。

環境

CLASSPATH
    ユーザ定義クラスへのパスをシステムに通知するために使用します。 複数のディレクトリを指定する場合はコロンで区切ります。 以下に例を示します。

    .:/home/avh/classes:/usr/local/java/classes

関連項目
java(1)、 javac(1)、 javadoc(1)、 javah(1)、 jdb(1)