通过 javap 命令可以反编译 .class 文件,实际使用的时候 javap 后面的类名加与不加 .class 都可以。

javap 命令截图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
-help --help -?     打印使用信息也就是打印图中所示内容
-version            打印版本信息实际打印出来的和 java 的版本是一致的
-v -verbose         打印详细信息这是一个 javap 反编译文件能够打印出来的更详细的信息
-l                  打印行号和本地变量表这里的行号不明白有什么用
-public             仅仅打印 public 修饰的类成员字段和方法这里如果 class 没有被 public 修饰同样能打印出来只是构造函数没有打印编译过后的构造函数和类一样没有被 public 修饰
-protected          仅仅打印 public/protected 修饰的类成员字段和方法
-package            仅仅打印 public/protected/package 修饰的类成员字段和方法
-p -private         打印所有的类成员字段和方法
-c                  打印具体的代码执行方式
-s                  打印内部类型方法签名这个方法签名和我们常写表示法不一样但实际的含义是一样的
-sysinfo            打印所在路径随着文件移动位置发生变化)、文件大小文件最后修改日期精确到日)、MD5 
-constants          打印常量的实际数值如果是 private 修饰的还要加 -p 才行不加这个时候打印 final 变量只打印到变量名后面就是分号了加了这个直接把常量的值也打印出来
-classpath <path>   不知道干什么用的
-cp <path>          不知道干什么用的
-bootclasspath <path>   不知道干什么用的