javap(1)

名前
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)

    • javadoc(1)

    • javah(1)

    • jdb(1)

    • jdeps(1)