JDK自带反编译工具javap
在JDK的bin文件夹下,有许多自带工具: javap就是其中的一个,对应为 javap.exe
javap可反编译查看Java编译器编译生成的字节码文件,
语法:
javap [ options ] class
options:
-help 帮助
-l 输出行和变量的表
-public 只输出public方法和域
-protected 只输出public和protected类和成员
-package 只输出包,public和protected类和成员,这是默认的
-p -private 输出所有类和成员
-s 输出内部类型签名
-c 输出分解后的代码,例如,类中每一个方法内,包含java字节码的指令,
-verbose 输出栈大小,方法参数的个数
-constants 输出静态final常量
例如:
先进入到class文件的目录,再执行:javap -verbose Helloworld.class (有时候会报错,说是找不到该class,可以把.class去掉再执行下,只写类名即可。)
从中可以看到jdk版本, major version: 51
jdk版本和版本号的对照表
十六进制 十进制
JDK1.5 31 49
JDK1.6 32 50
JDK1.7 33 51
JDK1.8 34 52
十六进制 十进制
JDK1.5 31 49
JDK1.6 32 50
JDK1.7 33 51
JDK1.8 34 52
--------------------------------------------------------------------
javap -c Helloworld > F://Helloworld.txt
可将反编译结果输出到txt文件中
--------------------------------------------------------------------
问题总结:
1. 如果该类太长,反编译后导致cmd中看不到关键信息major version, 则需要修改cmd的属性(属性 -> 布局 -> 屏幕缓冲区的高度,调大一些)。