javap,返汇编一个或者多个class文件。
命令行语法格式及含义(SYNOPSIS)
javap [options] classfile…
options
命令行选项。查看下面的OPTIONS章节。
classfile
要返汇编的class文件。或多个class由空格分隔,以便为注释(如DocFooter.class)处理。
可以指定可以在class path中找到的class,其类型为文件名或URL等,如:file:///home/user/myproject/src/DocFooter.class
命令描述(DESCRIPTION)
javap命令用于反汇编一个或多个class文件。输出取决于所使用的选项。
当不使用任何选项时,javap命令将打印package、protected、public的字段以及传递给javap的class的方法。
javap命令默认将其输出打印到stdout。
命令支持的选项及含义(OPTIONS)
-l
打印行和局部变量表。
这里的行指的是空白行,是为了增加输出的可读性。
-public
仅显示public的class和成员。
-protected
仅显示public和protected的class和成员。
-private, -p
显示所有的class和成员。
-s
打印内部的类型签名。
-sysinfo
显示将要处理的class的系统信息(path, size, date, MD5 hash)
-constants
显示static final常量。
-c
打印反汇编代码,例如,构成Java字节码的指令、类中的每个方法。
-verbose
打印栈大小、本地变量数量、函数参数及数量。
-classpath path
指定javap命令用于查找class的路径。设置后,覆盖默认的或CLASSPATH环境变量中指定的。
-bootclasspath path
指定加载引导类的路径。默认情况下,引导类是实现核心Java平台的类,位于jre/lib/rt.jar和其他几个JAR文件中的。
-extdir dirs
对搜索的安装扩展的安装位置进行覆盖。
扩展的默认位置是java.ext.dirs指定的值。
-J<option>
将指定的选项传递给JVM。例如:
javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName
有关JVM选项的更多信息,请参阅命令文档。
帮助类型选项
-help, –help, -?
打印帮助信息。
-version
打印版本信息。
简单示例(EXAMPLE)
Compile the following DocFooter class:
import java.awt.*;
import java.applet.*;
public class DocFooter extends Applet {
String email;
date = getParameter(“LAST_UPDATED”);
email = getParameter(“EMAIL”);
g.drawString(email,290,15);
}
The output from the 「javap DocFooter.class」 command yields the following:
Compiled from “DocFooter.java”
public class DocFooter extends java.applet.Applet {
java.lang.String email;
public DocFooter();
public void init();
public void paint(java.awt.Graphics);
}
The output from 「javap -c DocFooter.class」 command yields the following:
Compiled from “DocFooter.java”
public class DocFooter extends java.applet.Applet {
java.lang.String email;
Code:
1: invokespecial #1 // Method
java/applet/Applet.”<init>”:()V
Code:
1: sipush 500
4: bipush 100
6: invokevirtual #2 // Method resize:(II)V
9: aload_0
10: aload_0
11: ldc #3 // String LAST_UPDATED
13: invokevirtual #4 // Method
19: aload_0
20: aload_0
21: ldc #6 // String EMAIL
23: invokevirtual #4 // Method
29: return
Code:
1: new #8 // class java/lang/StringBuilder
4: dup
5: invokespecial #9 // Method
9: getfield #5 // Field date:Ljava/lang/String;
12: invokevirtual #10 // Method
17: invokevirtual #10 // Method
25: bipush 15
27: invokevirtual #13 // Method
31: aload_0
32: getfield #7 // Field email:Ljava/lang/String;
35: sipush 290
38: bipush 15
40: invokevirtual #13 // Method
java/awt/Graphics.drawString:(Ljava/lang/String;II)V
}
相关文档(SEE ALSO)
java(1)
javac(1)
javadoc(1)
javah(1)
jdb(1)
jdeps(1)
参考文献
- man 1 javap, version OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3-b15)
- http://docs.oracle.com/javase/8/docs/technotes/tools/unix/javap.html#BEHHDJGA