Java|Java 之 javap 命令
问:你知道 Java 怎么查看字节码吗,具体怎么使用呢?
答:可以使用 JDK 提供的 javap 命令,javap 是 Java class 文件分解器,可以反编译(即对 javac 编译的文件进行反编译),也可以查看 java 编译器生成的字节码,用于分解 class 文件。
一般情况下,大家比较少见通过 javap 对 class 文件进行反编译,因为有很多成熟的反编译工具可以使用,比如 jad。但是 javap 还可以查看 java 编译器为我们生成的字节码,通过它可以对照源代码和字节码,从而了解很多编译器内部的工作。
其具体使用流程就是先得到编译后的 class 文件,然后通过 javap 命令直接查看 class 文件即可,具体参数细节和想要通过 javap 分析什么可以通过 help 查看,如下:
javap -help
用法: javap
其中, 可能的选项包括:
-help--help-?输出此用法消息
-version版本信息
-v-verbose输出附加信息
-l输出行号和本地变量表
-public仅显示公共类和成员
-protected显示受保护的/公共类和成员
-package显示程序包/受保护的/公共类
和成员 (默认)
-p-private显示所有类和成员
-c对代码进行反汇编
-s输出内部类型签名
-sysinfo显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants显示静态最终常量
-classpath 指定查找用户类文件的位置
-bootclasspath 覆盖引导类文件的位置
有了它你在很多时候就不用再和别人争得脖子脸通红了,对方和你争论有些写法或者问题时你只用 javap 分析下字节码实现,然后向对方脸上一甩,技能 plus++。
可以说 javap 不仅是很多情况下分析问题的利器,也是自己透过 java 代码研读背后实现的一个有利工具,务必掌握。
【Java|Java 之 javap 命令】推荐 javap,java 代码背后的真相只有一个!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天