sourCEntral - mobile manpages

pdf

javap

名前

javap − Java クラスファイル逆アセンブラ

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

形式

javap [ options ] 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();

}

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 バイトコードから成る命令を表示します。これらは

http://java.sun.com/docs/books/vmspec/ の 「Java Virtual Machine Specification」にドキュメント化されています。

−verbose

メソッドのスタックサイズ、および localsargs の数を出力します。

−classpath path

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

次に例を示します。

−bootclasspath path

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

−extdirs dirs

インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能は、デフォルトでは java.ext.dirs にあります。

環境変数

CLASSPATH

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

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

関連項目

javac、java、jdb、javah、javadoc

pdf