---
name: "icepick-javap"
section: "1"
platform: "linux"
package: "icepick"
version: "0.01-3"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/icepick-javap"
---

# icepick-javap(1)

The Java Class File Disassembler Disassembles class files.

## NAME

javap - The Java Class File Disassembler

Disassembles class files.

## SYNOPSIS

```
javap [ options ] class. . .
```

## 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
