📜  Java javap工具

📅  最后修改于: 2020-10-01 05:46:27             🧑  作者: Mango

了解javap工具

javap命令反汇编一个类文件。 javap命令显示有关类文件中存在的字段,构造函数和方法的信息。

使用Javap工具的语法

让我们看看如何使用javap工具或命令。

javap fully_class_name

使用Javap工具的示例

javap java.lang.Object
  1. Compiled from “Object.java”  
  2. public class java.lang.Object {  
  3.   public java.lang.Object();  
  4.   public final native java.lang.Class getClass();  
  5.   public native int hashCode();  
  6.   public boolean equals(java.lang.Object);  
  7.   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;  
  8.   public java.lang.String toString();  
  9.   public final native void notify();  
  10.   public final native void notifyAll();  
  11.   public final native void wait(longthrows java.lang.InterruptedException;  
  12.   public final void wait(longintthrows java.lang.InterruptedException;  
  13.   public final void wait() throws java.lang.InterruptedException;  
  14.   protected void finalize() throws java.lang.Throwable;  
  15.   static {};  
  16. }  

在类中使用javap工具的另一个示例

让我们对java文件使用javap命令。

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

现在,让我们使用javap工具来反汇编类文件。

javap Simple
Compiled from ".java"
class Simple {
  Simple();
  public static void main(java.lang.String[]);
}

javap -c命令

您可以使用javap -c命令查看反汇编的代码。反映Java字节码的代码。

javap -c Simple
Compiled from ".java"
class Simple {
  Simple();
    Code:
       0: aload_0       
       1: invokespecial #1                  // Method java/lang/Object."":()V
       4: return        

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String hello java
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return        
}

javap工具的选项

javap工具的重要选项如下。

Option Description
-help prints the help message.
-l prints line number and local variable
-c disassembles the code
-s prints internal type signature
-sysinfo shows system info (path, size, date, MD5 hash)
-constants shows static final constants
-version shows version information