>Java >java지도 시간 >Java .class 파일을 보는 방법은 무엇입니까?

Java .class 파일을 보는 방법은 무엇입니까?

藏色散人
藏色散人원래의
2019-05-22 14:16:315634검색

Javac의 원리를 공부하기 위해서는 클래스 파일의 내용이 어떻게 구성되어 있는지 살펴보아야 할 때가 있습니다. 이때 클래스 파일을 확인하는 것이 필요합니다.

Java .class 파일을 보는 방법은 무엇입니까?

Java 클래스 파일을 보는 방법은 무엇입니까?

클래스 파일을 보는 방법은 다양합니다. JDK와 함께 제공되는 javap 도구를 사용하는 것이 좋습니다.

먼저 다음 소스 코드를 생성하세요.

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("hello world!");
    }
}

javac 컴파일러를 사용하여 소스 파일을 컴파일한 후 javap 도구를 사용하여 클래스 파일을 봅니다. 명령은 다음과 같습니다.

javap -verbose HelloWorld

DOS 실행 결과입니다. 창을 열고 아래와 같이 복사하세요:

F:\>javac HelloWorld.java
F:\>javap -verbose HelloWorld
Classfile /F:/HelloWorld.class
  Last modified 2017-12-24; size 426 bytes
  MD5 checksum 4efac412ef483c8a3fe7489c87d15c8c
  Compiled from "HelloWorld.java"
public class HelloWorld
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #6.#15         // java/lang/Object."<init>":()V
   #2 = Fieldref           #16.#17        // java/lang/System.out:Ljava/io/Print
Stream;
   #3 = String             #18            // hello world!
   #4 = Methodref          #19.#20        // java/io/PrintStream.println:(Ljava/
lang/String;)V
   #5 = Class              #21            // HelloWorld
   #6 = Class              #22            // java/lang/Object
   #7 = Utf8               <init>
   #8 = Utf8               ()V
   #9 = Utf8               Code
  #10 = Utf8               LineNumberTable
  #11 = Utf8               main
  #12 = Utf8               ([Ljava/lang/String;)V
  #13 = Utf8               SourceFile
  #14 = Utf8               HelloWorld.java
  #15 = NameAndType        #7:#8          // "<init>":()V
  #16 = Class              #23            // java/lang/System
  #17 = NameAndType        #24:#25        // out:Ljava/io/PrintStream;
  #18 = Utf8               hello world!
  #19 = Class              #26            // java/io/PrintStream
  #20 = NameAndType        #27:#28        // println:(Ljava/lang/String;)V
  #21 = Utf8               HelloWorld
  #22 = Utf8               java/lang/Object
  #23 = Utf8               java/lang/System
  #24 = Utf8               out
  #25 = Utf8               Ljava/io/PrintStream;
  #26 = Utf8               java/io/PrintStream
  #27 = Utf8               println
  #28 = Utf8               (Ljava/lang/String;)V
{
  public HelloWorld();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>
":()V
         4: return
      LineNumberTable:
        line 1: 0
  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #2                  // Field java/lang/System.out:Ljav
a/io/PrintStream;
         3: ldc           #3                  // String hello world!
         5: invokevirtual #4                  // Method java/io/PrintStream.prin
tln:(Ljava/lang/String;)V
         8: return
      LineNumberTable:
        line 3: 0
        line 4: 8
}
SourceFile: "HelloWorld.java"
F:\>

관련 학습 권장 사항: Java 기본 튜토리얼

위 내용은 Java .class 파일을 보는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.