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」にドキュメント化されています。
-verbose
メソッドのスタックサイズ、および localsargs の数を出力します。
-classpath path
javap がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、path の一般形式は次のようになります。
   .:<your_path>
例を示します。
.:/home/avh/classes:/usr/local/java/classes
-bootclasspath path
ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは jre/lib/rt.jar および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。
-extdirs dirs
インストールされた拡張機能を検索する場所をオーバーライドします。The default location for extensions is the value of java.ext.dirs.

環境変数

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

関連項目

javacjavajdbjavahjavadoc


Copyright © 2002-2006 Sun Microsystems, Inc. All Rights Reserved.

Sun
Java Software