プライマリ・コンテンツに移動
Java Platform, Standard Editionツール・リファレンス
リリース10
E94992-01
目次へ移動
目次

前
次

javap

javapコマンドは、1つ以上のクラス・ファイルを逆アセンブルする場合に使用します。

形式

javap [options] classes...
options

コマンド行オプションを指定します。「javapのオプション」を参照してください。

classes

注釈の処理対象となる、空白で区切られた1つ以上のクラスを指定します。クラス・パスで見つかるクラスを、そのファイル名、URLまたは完全修飾クラス名を使用して指定できます。

例:

path/to/MyClass.class
jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class
 java.lang.Object

説明

javapコマンドは、1つ以上のクラス・ファイルを逆アセンブルします。出力は指定するオプションにより異なります。オプションを使用しない場合、javapコマンドは、渡されたクラスのprotectedおよびpublicのフィールドとメソッドを出力します。

javapコマンドは、マルチリリースJARを認識しません。コマンドのクラス・パス形式を使用すると、マルチリリースであろうとなかろうと、すべてのJARファイルのベース・エントリが表示されます。URL形式を使用すると、URL形式の引数を使用して、逆アセンブル対象となる特定のバージョンのクラスを指定できます。

javapコマンドは、その出力をstdoutに表示します。

注意:

--形式のオプションをサポートするツールでは、GNU形式のオプションで空白のかわりに等号(=)を使用して、オプションの名前とその値を区切ることができます。

javapのオプション

-help--helpまたは-?

javapコマンドのヘルプ・メッセージを出力します。

-version

リリース情報を出力します。

-verboseまたは-v

選択されたクラスの追加情報を出力します。

-l

行番号とローカル変数表を出力します。

-public

publicクラスおよびメンバーだけを表示します。

-protected

protectedおよびpublicのクラスとメンバーだけを表示します。

-package

package、protected、publicのクラスとメンバーを表示します(デフォルト)。

-privateまたは-p

すべてのクラスとメンバーを表示します。

-c

クラスのメソッドごとに、逆アセンブルされるコード(たとえば、Javaバイト・コードで構成される命令)を出力します。

-s

内部の型シグニチャを出力します。

-sysinfo

処理されるクラスのシステム情報(パス、サイズ、日付、MD5ハッシュ)を表示します。

-constants

static final定数を表示します。

--module moduleまたは-m module

逆アセンブル対象となるクラスが含まれるモジュールを指定します。

--module-path path

アプリケーション・モジュールの参照先を指定します。

--system jdk

システム・モジュールの検索場所を指定します。

--class-path path-classpath pathまたは-cp path

javapコマンドでユーザー・クラス・クラスの検索に使用するパスを指定します。デフォルトまたはCLASSPATH環境変数(設定されている場合)をオーバーライドします。

-bootclasspath path

ブートストラップ・クラス・ファイルの場所をオーバーライドします。

-Joption

指定したオプションをJVMに渡します。例:

javap -J-version

javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName

「javaのオプションの概要」を参照してください。

javapの例

次のHelloWorldFrameクラスをコンパイルします。

import java.awt.Graphics;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class HelloWorldFrame extends JFrame {
 
   String message = "Hello World!";
 
   public HelloWorldFrame(){
        setContentPane(new JPanel(){
            @Override
            protected void paintComponent(Graphics g) {
                g.drawString(message ,15, 30);
            }
        });
        setSize(100,100);
    }
    public static void main(String[] args) {
        HelloWorldFrame frame = new HelloWorldFrame();
        frame.setVisible(true);
 
    }
 
}

javap HelloWorldFrame.classコマンドから生成される出力は、次のとおりです。

Compiled from "HelloWorldFrame.java"
public class HelloWorldFrame extends javax.swing.JFrame {
  java.lang.String message;
  public HelloWorldFrame();
  public static void main(java.lang.String[]);
}

javap -c HelloWorldFrame.classコマンドから生成される出力は、次のとおりです。

Compiled from "HelloWorldFrame.java"
public class HelloWorldFrame extends javax.swing.JFrame {
  java.lang.String message;
 
  public HelloWorldFrame();
    Code:
       0: aload_0
       1: invokespecial #1        // Method javax/swing/JFrame."<init>":()V
       4: aload_0
       5: ldc           #2        // String Hello World!
       7: putfield      #3        // Field message:Ljava/lang/String;
      10: aload_0
      11: new           #4        // class HelloWorldFrame$1
      14: dup
      15: aload_0
      16: invokespecial #5        // Method HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V
      19: invokevirtual #6        // Method setContentPane:(Ljava/awt/Container;)V
      22: aload_0
      23: bipush        100
      25: bipush        100
      27: invokevirtual #7        // Method setSize:(II)V
      30: return
 
  public static void main(java.lang.String[]);
    Code:
       0: new           #8        // class HelloWorldFrame
       3: dup
       4: invokespecial #9        // Method "<init>":()V
       7: astore_1
       8: aload_1
       9: iconst_1
      10: invokevirtual #10       // Method setVisible:(Z)V
      13: return
}