281 lines
7.6 KiB
Groff
281 lines
7.6 KiB
Groff
.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
|
|
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
.\"
|
|
.\" This code is free software; you can redistribute it and/or modify it
|
|
.\" under the terms of the GNU General Public License version 2 only, as
|
|
.\" published by the Free Software Foundation.
|
|
.\"
|
|
.\" This code is distributed in the hope that it will be useful, but WITHOUT
|
|
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
.\" version 2 for more details (a copy is included in the LICENSE file that
|
|
.\" accompanied this code).
|
|
.\"
|
|
.\" You should have received a copy of the GNU General Public License version
|
|
.\" 2 along with this work; if not, write to the Free Software Foundation,
|
|
.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
.\"
|
|
.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
.\" or visit www.oracle.com if you need additional information or have any
|
|
.\" questions.
|
|
.\"
|
|
.\" Automatically generated by Pandoc 2.3.1
|
|
.\"
|
|
.TH "JAVAP" "1" "2020" "JDK 14" "JDK Commands"
|
|
.hy
|
|
.SH NAME
|
|
.PP
|
|
javap \- disassemble one or more class files
|
|
.SH SYNOPSIS
|
|
.PP
|
|
\f[CB]javap\f[R] [\f[I]options\f[R]] \f[I]classes\f[R]...
|
|
.TP
|
|
.B \f[I]options\f[R]
|
|
Specifies the command\-line options.
|
|
See \f[B]Options for javap\f[R].
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[I]classes\f[R]
|
|
Specifies one or more classes separated by spaces to be processed for
|
|
annotations.
|
|
You can specify a class that can be found in the class path by its file
|
|
name, URL, or by its fully qualified class name.
|
|
.RS
|
|
.PP
|
|
Examples:
|
|
.RS
|
|
.PP
|
|
\f[CB]path/to/MyClass.class\f[R]
|
|
.RE
|
|
.RS
|
|
.PP
|
|
\f[CB]jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class\f[R]
|
|
.RE
|
|
.RS
|
|
.PP
|
|
\f[CB]java.lang.Object\f[R]
|
|
.RE
|
|
.RE
|
|
.SH DESCRIPTION
|
|
.PP
|
|
The \f[CB]javap\f[R] command disassembles one or more class files.
|
|
The output depends on the options used.
|
|
When no options are used, the \f[CB]javap\f[R] command prints the
|
|
protected and public fields, and methods of the classes passed to it.
|
|
.PP
|
|
The \f[CB]javap\f[R] command isn\[aq]t multirelease JAR aware.
|
|
Using the class path form of the command results in viewing the base
|
|
entry in all JAR files, multirelease or not.
|
|
Using the URL form, you can use the URL form of an argument to specify a
|
|
specific version of a class to be disassembled.
|
|
.PP
|
|
The \f[CB]javap\f[R] command prints its output to \f[CB]stdout\f[R].
|
|
.PP
|
|
\f[B]Note:\f[R]
|
|
.PP
|
|
In tools that support \f[CB]\-\-\f[R] style options, the GNU\-style
|
|
options can use the equal sign (\f[CB]=\f[R]) instead of a white space to
|
|
separate the name of an option from its value.
|
|
.SH OPTIONS FOR JAVAP
|
|
.TP
|
|
.B \f[CB]\-help\f[R], \f[CB]\-\-help\f[R] , or \f[CB]\-?\f[R]
|
|
Prints a help message for the \f[CB]javap\f[R] command.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-version\f[R]
|
|
Prints release information.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-verbose\f[R] or \f[CB]\-v\f[R]
|
|
Prints additional information about the selected class.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-l\f[R]
|
|
Prints line and local variable tables.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-public\f[R]
|
|
Shows only public classes and members.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-protected\f[R]
|
|
Shows only protected and public classes and members.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-package\f[R]
|
|
Shows package/protected/public classes and members (default).
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-private\f[R] or \f[CB]\-p\f[R]
|
|
Shows all classes and members.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-c\f[R]
|
|
Prints disassembled code, for example, the instructions that comprise
|
|
the Java bytecodes, for each of the methods in the class.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-s\f[R]
|
|
Prints internal type signatures.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-sysinfo\f[R]
|
|
Shows system information (path, size, date, SHA\-256 hash) of the class
|
|
being processed.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-constants\f[R]
|
|
Shows \f[CB]static\ final\f[R] constants.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-\-module\f[R] \f[I]module\f[R] or \f[CB]\-m\f[R] \f[I]module\f[R]
|
|
Specifies the module containing classes to be disassembled.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-\-module\-path\f[R] \f[I]path\f[R]
|
|
Specifies where to find application modules.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-\-system\f[R] \f[I]jdk\f[R]
|
|
Specifies where to find system modules.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R], \f[CB]\-classpath\f[R] \f[I]path\f[R], or \f[CB]\-cp\f[R] \f[I]path\f[R]
|
|
Specifies the path that the \f[CB]javap\f[R] command uses to find user
|
|
class files.
|
|
It overrides the default or the \f[CB]CLASSPATH\f[R] environment variable
|
|
when it\[aq]s set.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-bootclasspath\f[R] \f[I]path\f[R]
|
|
Overrides the location of bootstrap class files.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-\-multi\-release\f[R] \f[I]version\f[R]
|
|
Specifies the version to select in multi\-release JAR files.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B \f[CB]\-J\f[R]\f[I]option\f[R]
|
|
Passes the specified option to the JVM.
|
|
For example:
|
|
.RS
|
|
.IP
|
|
.nf
|
|
\f[CB]
|
|
javap\ \-J\-version
|
|
|
|
javap\ \-J\-Djava.security.manager\ \-J\-Djava.security.policy=MyPolicy\ MyClassName
|
|
\f[R]
|
|
.fi
|
|
.PP
|
|
See \f[I]Overview of Java Options\f[R] in \f[B]java\f[R].
|
|
.RE
|
|
.SH JAVAP EXAMPLE
|
|
.PP
|
|
Compile the following \f[CB]HelloWorldFrame\f[R] class:
|
|
.IP
|
|
.nf
|
|
\f[CB]
|
|
import\ java.awt.Graphics;
|
|
|
|
import\ javax.swing.JFrame;
|
|
import\ javax.swing.JPanel;
|
|
|
|
public\ class\ HelloWorldFrame\ extends\ JFrame\ {
|
|
|
|
\ \ \ String\ message\ =\ "Hello\ World!";
|
|
|
|
\ \ \ public\ HelloWorldFrame(){
|
|
\ \ \ \ \ \ \ \ setContentPane(new\ JPanel(){
|
|
\ \ \ \ \ \ \ \ \ \ \ \ \@Override
|
|
\ \ \ \ \ \ \ \ \ \ \ \ protected\ void\ paintComponent(Graphics\ g)\ {
|
|
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ g.drawString(message,\ 15,\ 30);
|
|
\ \ \ \ \ \ \ \ \ \ \ \ }
|
|
\ \ \ \ \ \ \ \ });
|
|
\ \ \ \ \ \ \ \ setSize(100,\ 100);
|
|
\ \ \ \ }
|
|
\ \ \ \ public\ static\ void\ main(String[]\ args)\ {
|
|
\ \ \ \ \ \ \ \ HelloWorldFrame\ frame\ =\ new\ HelloWorldFrame();
|
|
\ \ \ \ \ \ \ \ frame.setVisible(true);
|
|
|
|
\ \ \ \ }
|
|
|
|
}
|
|
\f[R]
|
|
.fi
|
|
.PP
|
|
The output from the \f[CB]javap\ HelloWorldFrame.class\f[R] command yields
|
|
the following:
|
|
.IP
|
|
.nf
|
|
\f[CB]
|
|
Compiled\ from\ "HelloWorldFrame.java"
|
|
public\ class\ HelloWorldFrame\ extends\ javax.swing.JFrame\ {
|
|
\ \ java.lang.String\ message;
|
|
\ \ public\ HelloWorldFrame();
|
|
\ \ public\ static\ void\ main(java.lang.String[]);
|
|
}
|
|
\f[R]
|
|
.fi
|
|
.PP
|
|
The output from the \f[CB]javap\ \-c\ HelloWorldFrame.class\f[R] command
|
|
yields the following:
|
|
.IP
|
|
.nf
|
|
\f[CB]
|
|
Compiled\ from\ "HelloWorldFrame.java"
|
|
public\ class\ HelloWorldFrame\ extends\ javax.swing.JFrame\ {
|
|
\ \ java.lang.String\ message;
|
|
|
|
\ \ public\ HelloWorldFrame();
|
|
\ \ \ \ Code:
|
|
\ \ \ \ \ \ \ 0:\ aload_0
|
|
\ \ \ \ \ \ \ 1:\ invokespecial\ #1\ \ \ \ \ \ \ \ //\ Method\ javax/swing/JFrame."<init>":()V
|
|
\ \ \ \ \ \ \ 4:\ aload_0
|
|
\ \ \ \ \ \ \ 5:\ ldc\ \ \ \ \ \ \ \ \ \ \ #2\ \ \ \ \ \ \ \ //\ String\ Hello\ World!
|
|
\ \ \ \ \ \ \ 7:\ putfield\ \ \ \ \ \ #3\ \ \ \ \ \ \ \ //\ Field\ message:Ljava/lang/String;
|
|
\ \ \ \ \ \ 10:\ aload_0
|
|
\ \ \ \ \ \ 11:\ new\ \ \ \ \ \ \ \ \ \ \ #4\ \ \ \ \ \ \ \ //\ class\ HelloWorldFrame$1
|
|
\ \ \ \ \ \ 14:\ dup
|
|
\ \ \ \ \ \ 15:\ aload_0
|
|
\ \ \ \ \ \ 16:\ invokespecial\ #5\ \ \ \ \ \ \ \ //\ Method\ HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V
|
|
\ \ \ \ \ \ 19:\ invokevirtual\ #6\ \ \ \ \ \ \ \ //\ Method\ setContentPane:(Ljava/awt/Container;)V
|
|
\ \ \ \ \ \ 22:\ aload_0
|
|
\ \ \ \ \ \ 23:\ bipush\ \ \ \ \ \ \ \ 100
|
|
\ \ \ \ \ \ 25:\ bipush\ \ \ \ \ \ \ \ 100
|
|
\ \ \ \ \ \ 27:\ invokevirtual\ #7\ \ \ \ \ \ \ \ //\ Method\ setSize:(II)V
|
|
\ \ \ \ \ \ 30:\ return
|
|
|
|
\ \ public\ static\ void\ main(java.lang.String[]);
|
|
\ \ \ \ Code:
|
|
\ \ \ \ \ \ \ 0:\ new\ \ \ \ \ \ \ \ \ \ \ #8\ \ \ \ \ \ \ \ //\ class\ HelloWorldFrame
|
|
\ \ \ \ \ \ \ 3:\ dup
|
|
\ \ \ \ \ \ \ 4:\ invokespecial\ #9\ \ \ \ \ \ \ \ //\ Method\ "<init>":()V
|
|
\ \ \ \ \ \ \ 7:\ astore_1
|
|
\ \ \ \ \ \ \ 8:\ aload_1
|
|
\ \ \ \ \ \ \ 9:\ iconst_1
|
|
\ \ \ \ \ \ 10:\ invokevirtual\ #10\ \ \ \ \ \ \ //\ Method\ setVisible:(Z)V
|
|
\ \ \ \ \ \ 13:\ return
|
|
}
|
|
\f[R]
|
|
.fi
|