javap - Java 클래스 파일 disassembler

클래스 파일을 disassemble 합니다.

형식

javap [ options  ] class.  .  .

설명

javap 커멘드는, 클래스 파일을 disassemble 합니다. 그 출력은 지정하는 옵션에 의해 다릅니다. 옵션을 지정하지 않는 경우,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 <Method java.applet.Applet() >
   4 return

Method void init()
   0 aload_0
   1 sipush 500
   4 bipush 100
   6 invokevirtual #2 <Method void resize(int, int) >
   9 aload_0
  10 aload_0
  11 ldc #3 <String "LAST_UPDATED">
  13 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String) >
  16 putfield #5 <Field java.lang.String date>
  19 aload_0
  20 aload_0
  21 ldc #6 <String "EMAIL">
  23 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String) >
  26 putfield #7 <Field java.lang.String email>
  29 return

Method void paint(java.awt.Graphics)
   0 aload_1
   1 new #8 <Class java.lang.StringBuffer>
   4 dup
   5 invokespecial #9 <Method java.lang.StringBuffer() >
   8 aload_0
   9 getfield #5 <Field java.lang.String date>
  12 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String) >
  15 ldc #11 <String " by ">
  17 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String) >
  20 invokevirtual #12 <Method java.lang.String toString() >
  23 bipush 100
  25 bipush 15
  27 invokevirtual #13 <Method void drawString(java.lang.String, int, int) >
  30 aload_1
  31 aload_0
  32 getfield #7 <Field java.lang.String email>
  35 sipush 290
  38 bipush 15
  40 invokevirtual #13 <Method void drawString(java.lang.String, int, int) >
  43 return

옵션

-help
javap 의 헬프 메세지를 출력합니다.
-l
행 번호와 국소 변수 테이블을 표시합니다.
-b
JDK 1.1 의 javap 와의 하위 호환성을 보증합니다.
-public
public 클래스 및 멤버만을 표시합니다.
-protected
protected 및 public 의 클래스와 멤버만을 표시합니다.
-package
package, protected, 및 public 의 클래스와 멤버만을 표시합니다. 이것은 디폴트의 설정입니다.
-private
모든 클래스와 멤버를 표시합니다.
-Jflag
런타임 시스템에 직접 flag 를 건네줍니다. 사용예를 다음에 나타냅니다.
javap -J-version
javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName
-s
내부의 형태 시그니챠를 출력합니다.
-c
클래스의 각 메소드를 위해서(때문에) disassemble 되는 코드, 즉 Java 바이트 코드로부터 완성되는 명령을 표시합니다. 이것들은「Java Virtual Machine Specification」에 문서화 되고 있습니다.
-verbose
메소드의 스택 사이즈, 및 localsargs 의 수를 출력합니다.
-classpath path
javap 가 클래스를 찾기 위해서(때문에) 사용하는 패스를 지정합니다. 디폴트 또는 CLASSPATH 환경 변수 설정을 덧쓰기합니다. 디렉토리는 구두점으로 분할합니다. 따라서,path 의 일반 형식은 다음과 같이 됩니다.
   . :<your_path>
예를 나타냅니다.
. :/home/avh/classes:/usr/local/java/classes
-bootclasspath path
bootstrap 클래스를 로드하는 패스를 지정합니다. bootstrap 클래스는, 디폴트에서는 jre/lib/rt.jar 및 다른 몇개의 JAR 파일에 있는, 코어 Java 2 플랫폼을 구현하는 클래스입니다.
-extdirs dirs
인스톨 된 확장 기능을 검색하는 장소를 오버라이드(override) 합니다. The default location for extensions is the value of java.ext.dirs.

환경 변수

CLASSPATH
사용자 정의 클래스에의 패스를 시스템으로 지정합니다. 디렉토리는 구두점으로 분할합니다. 다음에 예를 나타냅니다.
. :/home/avh/classes:/usr/local/java/classes

관련 항목

javac , java ,jdb ,javah ,javadoc


Copyright © 2002-2006 Sun Microsystems, Inc. All Rights Reserved.

Sun
Java Software