背景
在学习《深入理解Java虚拟机》时,难免要对class文件进行研究.好在Oracle已经为我们提供了专门分析Class文件字节码的工具:javap,因此我们只需把该工具集成到我们的IDEA中即可.
集成javap
javap是JDK给我们提供的一个Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码。用于分解class文件。
不熟悉用法的话可以在cmd中输入命令:javap -help就可以看到该命令的用法:
用法: javap <options> <classes>
其中, 可能的选项包括:
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
-classpath <path> 指定查找用户类文件的位置
-cp <path> 指定查找用户类文件的位置
如果要分析一个class文件可以使用命令:
javap -v classFullName
每次都要这么输入的话显然是很麻烦的,不过还好idea功能也很强大,可以直接把外部工具直接集成进来。
步骤
- 打开设置界面,选择Tools -> External Toos ,点击+号,如果所示:
- 在弹出框中输入要输入的信息,如图:
- 点击ok就大工告成了!可以随便选择一个类试一下
输出如下(不带-verbose参数):
Compiled from "HelloWorld.java"
public class com.test.HelloWorld {
public com.test.HelloWorld();
public static void main(java.lang.String[]);
}