javap(1) 基本ツール 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

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

-J*option*

指定されたオプションを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)](/man/os/openjdk-8/java.1)

•[javac(1)](/man/os/openjdk-8/javac.1)

•[javadoc(1)](/man/os/openjdk-8/javadoc.1)

•[javah(1)](/man/os/openjdk-8/javah.1)

•[jdb(1)](/man/os/openjdk-8/jdb.1)

•[jdeps(1)](/man/os/openjdk-8/jdeps.1)

2014年8月8日 JDK 8

---

Document: javap(1) from openjdk-8 8.504-r4 (Chainguard OS)
Source: https://github.com/openjdk/jdk8u.git
