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
4 return
Method void init()
0 aload_0
1 sipush 500
4 bipush 100
6 invokevirtual #2
9 aload_0
10 aload_0
11 ldc #3
13 invokevirtual #4
16 putfield #5
19 aload_0
20 aload_0
21 ldc #6
23 invokevirtual #4
26 putfield #7
29 return
Method void paint(java.awt.Graphics)
0 aload_1
1 new #8
4 dup
5 invokespecial #9
8 aload_0
9 getfield #5
12 invokevirtual #10
15 ldc #11
17 invokevirtual #10
20 invokevirtual #12
23 bipush 100
25 bipush 15
27 invokevirtual #13
30 aload_1
31 aload_0
32 getfield #7
35 sipush 290
38 bipush 15
40 invokevirtual #13
43 return
オプション
- -help
- javap のヘルプメッセージを出力します。
- -l
-
行番号と局所変数テーブルを表示します。
- -b
-
JDK 1.1 の javap との下位互換性を保証します。
- -public
-
public なクラスとメンバだけを表示します。
- -protected
-
protected および public なクラスとメンバだけを表示します。
- -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
- メソッドのスタックサイズ、および
locals と args の数を出力します。
- -classpath path
- javap がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはセミコロンで分割します。したがって、path の一般形式は次のようになります。
.;<your_path>
例:
.;C:\usrs\dac\classes;C:\tools\java\classes
- -bootclasspath path
- ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは jre\lib\rt.jar および jre\lib\i18n.jar にある、コア Java プラットフォームを実装するクラスです。
- -extdirs dirs
- インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能は、デフォルトでは jre\lib\ext にあります。
環境変数
- CLASSPATH
- ユーザ定義クラスへのパスをシステムに指定します。ディレクトリはセミコロンで分割します。 次に例を示しますす。
.;C:\usrs\dac\classes;C:\tools\java\classes
関連項目
javac、java、jdb、javah