javap命令反汇编一个类文件。 javap命令显示有关类文件中存在的字段, 构造函数和方法的信息。
使用Javap工具的语法
让我们看看如何使用javap工具或命令。
javap fully_class_name
使用Javap工具的示例
javap java.lang.Object
输出:
Compiled from "Object.java"
public class java.lang.Object {
public java.lang.Object();
public final native java.lang.Class<?> getClass();
public native int hashCode();
public boolean equals(java.lang.Object);
protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;
public java.lang.String toString();
public final native void notify();
public final native void notifyAll();
public final native void wait(long) throws java.lang.InterruptedException;
public final void wait(long, int) throws java.lang.InterruptedException;
public final void wait() throws java.lang.InterruptedException;
protected void finalize() throws java.lang.Throwable;
static {};
}
在类中使用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."<init>":()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工具的重要选项如下。
选项 | 描述 |
---|---|
-help | 打印帮助信息。 |
-l | 打印行号和局部变量 |
-c | 反汇编代码 |
-s | 打印内部类型签名 |
-sysinfo | shows system info (path, size, date, MD5 hash) |
-constants | 显示静态最终常数 |
-version | 显示版本信息 |
评论前必须登录!
注册