您的位置:首页 > 编程语言 > Java开发

javap反编译命令的使用

2013-08-09 17:13 239 查看


javap反编译命令的使用

用习惯了著名的反编译工具jad的话,如果有的时候单给出class文件,要快速看这个class文件

的JDK版本号等,其实不用工具,也可以用JDK自带的javap命令进行反编译输出,下面小结

其用法:

1,javap -verbose 类名

得到的信息如下:

Compiled from "Test.java"

public class Test extends java.lang.Object

SourceFile: "Test.java"

minor version: 0

major version: 50

Constant pool:

......

可以看出jdk的版本,这个用在判断某些CLASS的版本是否兼容的时候很有用.

2 最常见的不带参数的情况:javap 类名

比如某个类:

Java代码



package test;

public class Test {

int number = 5;

public void sayHello() {

System.out.println("Hello");

}

}

则:

C:\temp\javaptest>javap Test

Compiled from "Test.java"

public class test.Test extends java.lang.Object{

int number;

public test.Test();

public void sayHello();

}

带参数-c:

则可以看到字节码了:

Java代码



C:\temp\javaptest>javap -c Test

Compiled from "Test.java"

public class test.Test extends java.lang.Object{

int number;

public test.Test();

Code:

0: aload_0

1: invokespecial #1; //Method java/lang/Object."<init>":()V

4: aload_0

5: iconst_5

6: putfield #2; //Field number:I

9: return

public void sayHello();

Code:

0: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream;

3: ldc #4; //String Hello

5: invokevirtual #5; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

8: return

}

带参数-l: 将显示行号和局部变量表

-public 只显示 public 类及成员。

  -protected 只显示 protected 和 public 类及成员。

  -package 只显示包、protected 和 public 类及成员。这是缺省设置。

  -private 显示所有类和成员。

转自: /article/3751833.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: