javap可以用来反编译class文件
命令参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| -help --help -? 输出此用法消息 -version 版本信息 -v -verbose 输出附加信息 -l 输出行号和本地变量表 -public 仅显示公共类和成员 -protected 显示受保护的/公共类和成员 -package 显示程序包/受保护的/公共类 和成员 (默认) -p -private 显示所有类和成员 -c 对代码进行反汇编 -s 输出内部类型签名 -sysinfo 显示正在处理的类的 系统信息 (路径, 大小, 日期, MD5 散列) -constants 显示最终常量 --module <模块>, -m <模块> 指定包含要反汇编的类的模块 --module-path <路径> 指定查找应用程序模块的位置 --system <jdk> 指定查找系统模块的位置 --class-path <路径> 指定查找用户类文件的位置 -classpath <路径> 指定查找用户类文件的位置 -cp <路径> 指定查找用户类文件的位置 -bootclasspath <路径> 覆盖引导类文件的位置
|
verbose结果组成
1.基本信息
- class文件版本号(对应的是jre版本,高版本编译的文件不能用低版本的javap反编译)
- 类的访问权限
- 类及父类名
- 接口、字段、属性、方法及对应数量
2.常量池
存放各种常量以及符号引用
3.字段区域
列举该类中的各个字段,里边包含字段类型和访问权限
4.方法区域
包含方法描述符和访问权限,以及代码区域,代码区域开始位置声明了操作数栈及局部变量的最大值,方法接收参数的数量。这里的局部变量指的是字节码文件中变量的数量。
文章链接 https://fangzongzhou.github.io/2018/10/08/计算机/技术栈/Java/javap/