javap − 1つ以上のクラス・ファイルを逆アセンブルします。
javap [options] classfile...
options
コマンド行オプション。オプションを参照してください。
classfile
注釈の処理対象となる、空白で区切った1つ以上のクラス(DocFooter.classなど)。クラス・パスで検出できるクラスを、ファイル名またはURL(file:///home/user/myproject/src/DocFooter.classなど)で指定できます。
javapコマンドは、1つまたは複数のクラス・ファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、javapコマンドは、そのパッケージ、渡されたクラスのprotectedおよびpublicのフィールドとメソッドを出力します。javapコマンドはその出力を標準出力に表示します。
−help
−−help
−?
javapコマンドについてのヘルプ・メッセージを出力します。
−version
リリース情報を出力します。
−l
行番号とローカル変数表を出力します。
−public
publicクラスおよびメンバーのみ表示します。
−protected
protectedおよびpublicのクラスとメンバーのみを表示します。
−private
−p
すべてのクラスとメンバーを表示します。
−Joption
指定されたオプションをJVMに渡します。次に例を示します。
javap −J−version
javap −J−Djava.security.manager −J−Djava.security.policy=MyPolicy MyClassName
JVMオプションの詳細は、コマンドのマニュアルを参照してください。
−s
内部の型シグニチャを出力します。
−sysinfo
処理中のクラスのシステム情報(パス、サイズ、日付、MD5ハッシュ)を表示します。
−constants
static final定数を表示します。
−c
クラスの各メソッドのために逆アセンブルされるコード、すなわちJavaバイトコードからなる命令を表示します。
−verbose
メソッドのスタック・サイズ、localsとargumentsの数を出力します。
−classpath path
クラスを探すためにjavapコマンドが使用するパスを指定します。デフォルトまたはCLASSPATH環境変数の設定をオーバーライドします。
−bootclasspath path
ブートストラップ・クラスをロードするパスを指定します。ブートストラップ・クラスは、デフォルトではjre/lib/rt.jarおよび他のいくつかのJARファイルにある、コアJavaプラットフォームを実装するクラスです。
−extdir dirs
インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能のデフォルト位置はjava.ext.dirsです。
次のDocFooterクラスをコンパイルします。
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.classコマンドからの出力は次を生成します。
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.classコマンドからの出力は次を生成します。
Compiled from "DocFooter.java"
public class DocFooter extends java.applet.Applet {
java.lang.String date;
java.lang.String email;
public DocFooter();
Code:
0: aload_0
1: invokespecial #1 // Method
java/applet/Applet."<init>":()V
4: return
public void init();
Code:
0: aload_0
1: sipush 500
4: bipush 100
6: invokevirtual #2 // Method resize:(II)V
9: aload_0
10: aload_0
11: ldc #3 // String LAST_UPDATED
13: invokevirtual #4 // Method
getParameter:(Ljava/lang/String;)Ljava/lang/String;
16: putfield #5 // Field date:Ljava/lang/String;
19: aload_0
20: aload_0
21: ldc #6 // String EMAIL
23: invokevirtual #4 // Method
getParameter:(Ljava/lang/String;)Ljava/lang/String;
26: putfield #7 // Field email:Ljava/lang/String;
29: return
public void paint(java.awt.Graphics);
Code:
0: aload_1
1: new #8 // class java/lang/StringBuilder
4: dup
5: invokespecial #9 // Method
java/lang/StringBuilder."<init>":()V
8: aload_0
9: getfield #5 // Field date:Ljava/lang/String;
12: invokevirtual #10 // Method
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: ldc #11 // String by
17: invokevirtual #10 // Method
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
20: invokevirtual #12 // Method
java/lang/StringBuilder.toString:()Ljava/lang/String;
23: bipush 100
25: bipush 15
27: invokevirtual #13 // Method
java/awt/Graphics.drawString:(Ljava/lang/String;II)V
30: aload_1
31: aload_0
32: getfield #7 // Field email:Ljava/lang/String;
35: sipush 290
38: bipush 15
40: invokevirtual #13 // Method
java/awt/Graphics.drawString:(Ljava/lang/String;II)V
43: return
}
• java(1)
• javac(1)
• javah(1)
• jdb(1)
• jdeps(1)