更新时间:2022-07-20 07:08:47 来源:极悦 浏览2451次
用习惯了著名的反编译工具jad的话,如果有的时候单给出class文件,要快速看这个class文件的JDK版本号等,其实不用工具,也可以用JDK自带的javap命令进行反编译输出,下面小结其用法:
得到的信息如下:
Compiled from "Test.java"
public class Test extends java.lang.Object
SourceFile: "Test.java"
minor version: 0
major version: 50
Constant pool:
可以看出jdk的版本,这个用在判断某些CLASS的版本是否兼容的时候很有用.
比如某个类:
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:
则可以看到字节码了:
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."":()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 显示所有类和成员。
通过上述介绍,相信大家对Java反编译命令的用法已经有所了解,如果您想了解更多相关知识,不妨来关注一下极悦的Java开发工具,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习