javap
The Java Class File Disassembler Disassembles class files.
Synopsis
javap [
options ] class. . .
add an example, a script, a trick and tips
examples
source
/opt/java/bin/javac standalone/QueensJava.java
javap -c -cp standalone QueensJava\$Board >Board-java-1.7.0.bytecode
export GROOVY_HOME=/opt/groovy-1.8.0/
/opt/groovy-1.8.0/bin/groovyc standalone/QueensGroovy.groovy
javap -c -cp . Board >Board-groovy-1.8.0.bytecode
export GROOVY_HOME=/opt/groovypp-0.4.279/
/opt/groovypp-0.4.279/bin/groovyc standalone/QueensGroovy.groovy
description
The
javap command disassembles a class file. Its output
depends on the options used. If no options are used,
javap prints out the package, protected, and public
fields and methods of the classes passed to it. javap
prints its output to stdout. For example, compile the
following class declaration:
import
java.awt.*;
import java.applet.*;
public class
DocFooter extends Applet {
String date;
String email;
public void
init() {
resize(500,100);
date = getParameter("LAST_UPDATED");
email = getParameter("EMAIL");
}
public void
paint(Graphics g) {
g.drawString(date + " by ",100, 15);
g.drawString(email,290,15);
}
}
The output from
javap DocFooter yields:
Compiled
from DocFooter.java
public class DocFooter extends java.applet.Applet {
java.lang.String date;
java.lang.String email;
public DocFooter();
public void init();
public void paint(java.awt.Graphics);
}
The output from
javap -c DocFooter yields:
Compiled
from DocFooter.java
public class DocFooter extends java.applet.Applet {
java.lang.String date;
java.lang.String email;
public DocFooter();
public void init();
public void paint(java.awt.Graphics);
}
Method
DocFooter()
0 aload_0
1 invokespecial #1 <Method java.applet.Applet()>
4 return
Method void
init()
0 aload_0
1 sipush 500
4 bipush 100
6 invokevirtual #2 <Method void resize(int, int)>
9 aload_0
10 aload_0
11 ldc #3 <String "LAST_UPDATED">
13 invokevirtual #4 <Method java.lang.String
getParameter(java.lang.String)>
16 putfield #5 <Field java.lang.String date>
19 aload_0
20 aload_0
21 ldc #6 <String "EMAIL">
23 invokevirtual #4 <Method java.lang.String
getParameter(java.lang.String)>
26 putfield #7 <Field java.lang.String email>
29 return
Method void
paint(java.awt.Graphics)
0 aload_1
1 new #8 <Class java.lang.StringBuffer>
4 dup
5 invokespecial #9 <Method java.lang.StringBuffer()>
8 aload_0
9 getfield #5 <Field java.lang.String date>
12 invokevirtual #10 <Method java.lang.StringBuffer
append(java.lang.String)>
15 ldc #11 <String " by ">
17 invokevirtual #10 <Method java.lang.StringBuffer
append(java.lang.String)>
20 invokevirtual #12 <Method java.lang.String
toString()>
23 bipush 100
25 bipush 15
27 invokevirtual #13 <Method void
drawString(java.lang.String, int, int)>
30 aload_1
31 aload_0
32 getfield #7 <Field java.lang.String email>
35 sipush 290
38 bipush 15
40 invokevirtual #13 <Method void
drawString(java.lang.String, int, int)>
43 return
options
-help
Prints out help message for
javap.
-l
Prints out line and local variable tables.
-b
Ensures backward compatibility with javap in JDK
1.1.
-public
Shows only public classes and
members.
-protected
Shows only protected and public
classes and members.
-package
Shows only package, protected,
and public classes and members. This is the default.
-private
Shows all classes and
members.
-Jflag
Pass flag directly to
the runtime system. Some examples:
javap
-J-version
javap -J-Djava.security.manager
-J-Djava.security.policy=MyPolicy
MyClassName
-s
Prints internal type signatures.
-c
Prints out disassembled code, i.e., the instructions
that comprise the Java bytecodes, for each of the methods in
the class. These are documented in the Java Virtual
Machine Specification @
http://java.sun.com/docs/books/vmspec/.
-verbose
Prints stack size, number of
locals and args for methods.
-classpath path
Specifies the path javap
uses to look up classes. Overrides the default or the
CLASSPATH environment variable if it is set. Directories are
separated by colons. Thus the general format for path
is:
.:<your_path>
For example:
-bootclasspath path
Specifies path from which to
load bootstrap classes. By default, the bootstrap classes
are the classes implementing the core Java platform located
in jre/lib/rt.jar and several other jar files.
-extdirs dirs
Overrides location at which
installed extensions are searched for. The default location
for extensions is the value of java.ext.dirs.
environment variables
CLASSPATH
Used to provide the system a path to user-defined classes.
Directories are separated by colons, for example, For example:
see also
javac, java,
jdb, javah, javadoc