javap(1)

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

    クラスファイルを逆アセンブルします。

形式

javap [ options ] class. . .

説明

javap コマンドは、クラスファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、javap は、そのパッケージ、渡されたクラスの protected および public のフィールドとメソッドを出力します。 javap はその出力を標準出力に表示します。たとえば、次のクラス宣言をコンパイルするとします。

    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 DocFooter();
        public void init();
        public void paint(java.awt.Graphics);
    }

javap -c DocFooter がもたらす出力は次のようになります。

    Compiled from DocFooter.java
    public class DocFooter extends java.applet.Applet {
        java.lang.String date;
        java.lang.String email;
        public DocFooter();
        public void init();
        public void paint(java.awt.Graphics);
    }

    Method DocFooter()
       0 aload_0
       1 invokespecial #1 <Method java.applet.Applet()>
       4 return

    Method void init()
       0 aload_0
       1 sipush 500
       4 bipush 100
       6 invokevirtual #2 <Method void resize(int, int)>
       9 aload_0
      10 aload_0
      11 ldc #3 <String "LAST_UPDATED">
      13 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String)>
      16 putfield #5 <Field java.lang.String date>
      19 aload_0
      20 aload_0
      21 ldc #6 <String "EMAIL">
      23 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String)>
      26 putfield #7 <Field java.lang.String email>
      29 return

    Method void paint(java.awt.Graphics)
       0 aload_1
       1 new #8 <Class java.lang.StringBuffer>
       4 dup
       5 invokespecial #9 <Method java.lang.StringBuffer()>
       8 aload_0
       9 getfield #5 <Field java.lang.String date>
      12 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String)>
      15 ldc #11 <String " by ">
      17 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String)>
      20 invokevirtual #12 <Method java.lang.String toString()>
      23 bipush 100
      25 bipush 15
      27 invokevirtual #13 <Method void drawString(java.lang.String, int, int)>
      30 aload_1
      31 aload_0
      32 getfield #7 <Field java.lang.String email>
      35 sipush 290
      38 bipush 15
      40 invokevirtual #13 <Method void drawString(java.lang.String, int, int)>
      43 return

オプション

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

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

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

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

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

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

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

    -Jflag
        ランタイムシステムに直接 flag を渡します。使用例を次に示します。

        javap -J-version
        javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName

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

    -c  クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは 「Java Virtual Machine Specification」 @
        http://java.sun.com/docs/books/vmspec/にドキュメント化されています。

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

    -classpath path
        javap がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、path の一般形式は次のようになります。

           .:<your_path>

        例を示します。

    -bootclasspath path
        ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは jre/lib/rt.jar および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。

    -extdirs dirs
        インストールされた拡張機能を検索する場所をオーバーライドします。The default location for extensions is the value of java.ext.dirs.

環境変数

    CLASSPATH
        ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。 次に例を示します。

関連項目

javac(1)、 java(1)、jdb(1)、javah(1)、javadoc(1)