8344056: Use markdown format for man pages
Reviewed-by: cstein, iris, dholmes
This commit is contained in:
parent
6c2ae44c05
commit
475feb064b
@ -178,10 +178,8 @@ ifeq ($(call isTargetOsType, unix)+$(MAKEFILE_PREFIX), true+Launcher)
|
||||
# We assume all our man pages should reside in section 1.
|
||||
|
||||
MAN_FILES_MD := $(wildcard $(addsuffix /*.md, $(call FindModuleManDirs, $(MODULE))))
|
||||
MAN_FILES_TROFF := $(wildcard $(addsuffix /*.1, $(call FindModuleManDirs, $(MODULE))))
|
||||
|
||||
ifneq ($(MAN_FILES_MD), )
|
||||
# If we got markdown files, ignore the troff files
|
||||
ifeq ($(ENABLE_PANDOC), false)
|
||||
$(info Warning: pandoc not found. Not generating man pages)
|
||||
else
|
||||
@ -226,13 +224,5 @@ ifeq ($(call isTargetOsType, unix)+$(MAKEFILE_PREFIX), true+Launcher)
|
||||
|
||||
TARGETS += $(BUILD_MAN_PAGES)
|
||||
endif
|
||||
else
|
||||
# No markdown man pages present
|
||||
$(eval $(call SetupCopyFiles, COPY_MAN_PAGES, \
|
||||
DEST := $(SUPPORT_OUTPUTDIR)/modules_man/$(MODULE)/man1, \
|
||||
FILES := $(MAN_FILES_TROFF), \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_MAN_PAGES)
|
||||
endif
|
||||
endif
|
||||
|
File diff suppressed because it is too large
Load Diff
4050
src/java.base/share/man/java.md
Normal file
4050
src/java.base/share/man/java.md
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
2430
src/java.base/share/man/keytool.md
Normal file
2430
src/java.base/share/man/keytool.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,100 +0,0 @@
|
||||
.\" Copyright (c) 1997, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "RMIREGISTRY" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
rmiregistry - create and start a remote object registry on the specified
|
||||
port on the current host
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]rmiregistry\f[R] [\f[I]options\f[R]] [\f[I]port\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the option for the \f[V]rmiregistry\f[R] command.
|
||||
See \f[B]Options\f[R]
|
||||
.TP
|
||||
\f[I]port\f[R]
|
||||
The number of a port on the current host at which to start the remote
|
||||
object registry.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]rmiregistry\f[R] command creates and starts a remote object
|
||||
registry on the specified port on the current host.
|
||||
If the port is omitted, then the registry is started on port 1099.
|
||||
The \f[V]rmiregistry\f[R] command produces no output and is typically
|
||||
run in the background, for example:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]rmiregistry &\f[R]
|
||||
.RE
|
||||
.PP
|
||||
A remote object registry is a bootstrap naming service that\[aq]s used
|
||||
by RMI servers on the same host to bind remote objects to names.
|
||||
Clients on local and remote hosts can then look up remote objects and
|
||||
make remote method invocations.
|
||||
.PP
|
||||
The registry is typically used to locate the first remote object on
|
||||
which an application needs to call methods.
|
||||
That object then provides application-specific support for finding other
|
||||
objects.
|
||||
.PP
|
||||
The methods of the \f[V]java.rmi.registry.LocateRegistry\f[R] class are
|
||||
used to get a registry operating on the local host or local host and
|
||||
port.
|
||||
.PP
|
||||
The URL-based methods of the \f[V]java.rmi.Naming\f[R] class operate on
|
||||
a registry and can be used to:
|
||||
.IP \[bu] 2
|
||||
Bind the specified name to a remote object
|
||||
.IP \[bu] 2
|
||||
Return an array of the names bound in the registry
|
||||
.IP \[bu] 2
|
||||
Return a reference, a stub, for the remote object associated with the
|
||||
specified name
|
||||
.IP \[bu] 2
|
||||
Rebind the specified name to a new remote object
|
||||
.IP \[bu] 2
|
||||
Destroy the binding for the specified name that\[aq]s associated with a
|
||||
remote object
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]option\f[R]
|
||||
Used with any Java option to pass the \f[I]option\f[R] following the
|
||||
\f[V]-J\f[R] (no spaces between the \f[V]-J\f[R] and the option) to the
|
||||
Java interpreter.
|
86
src/java.rmi/share/man/rmiregistry.md
Normal file
86
src/java.rmi/share/man/rmiregistry.md
Normal file
@ -0,0 +1,86 @@
|
||||
---
|
||||
# Copyright (c) 1997, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'RMIREGISTRY(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
rmiregistry - create and start a remote object registry on the specified port
|
||||
on the current host
|
||||
|
||||
## Synopsis
|
||||
|
||||
`rmiregistry` \[*options*\] \[*port*\]
|
||||
|
||||
*options*
|
||||
: This represents the option for the `rmiregistry` command. See
|
||||
[Options]
|
||||
|
||||
*port*
|
||||
: The number of a port on the current host at which to start the remote
|
||||
object registry.
|
||||
|
||||
## Description
|
||||
|
||||
The `rmiregistry` command creates and starts a remote object registry on the
|
||||
specified port on the current host. If the port is omitted, then the registry
|
||||
is started on port 1099. The `rmiregistry` command produces no output and is
|
||||
typically run in the background, for example:
|
||||
|
||||
> `rmiregistry &`
|
||||
|
||||
A remote object registry is a bootstrap naming service that's used by RMI
|
||||
servers on the same host to bind remote objects to names. Clients on local and
|
||||
remote hosts can then look up remote objects and make remote method
|
||||
invocations.
|
||||
|
||||
The registry is typically used to locate the first remote object on which an
|
||||
application needs to call methods. That object then provides
|
||||
application-specific support for finding other objects.
|
||||
|
||||
The methods of the `java.rmi.registry.LocateRegistry` class are used to get a
|
||||
registry operating on the local host or local host and port.
|
||||
|
||||
The URL-based methods of the `java.rmi.Naming` class operate on a registry and
|
||||
can be used to:
|
||||
|
||||
- Bind the specified name to a remote object
|
||||
|
||||
- Return an array of the names bound in the registry
|
||||
|
||||
- Return a reference, a stub, for the remote object associated with the
|
||||
specified name
|
||||
|
||||
- Rebind the specified name to a new remote object
|
||||
|
||||
- Destroy the binding for the specified name that's associated with a remote
|
||||
object
|
||||
|
||||
## Options
|
||||
|
||||
`-J`*option*
|
||||
: Used with any Java option to pass the *option* following the `-J` (no
|
||||
spaces between the `-J` and the option) to the Java interpreter.
|
@ -1,166 +0,0 @@
|
||||
.\" Copyright (c) 2006, 2024, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JRUNSCRIPT" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jrunscript - run a command-line script shell that supports interactive
|
||||
and batch modes
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
This tool is \f[B]experimental\f[R] and unsupported.
|
||||
It is deprecated and will be removed in a future release.
|
||||
.PP
|
||||
\f[V]jrunscript\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the \f[V]jrunscript\f[R] command-line options that can
|
||||
be used.
|
||||
See \f[B]Options for the jrunscript Command\f[R].
|
||||
.TP
|
||||
\f[I]arguments\f[R]
|
||||
Arguments, when used, follow immediately after options or the command
|
||||
name.
|
||||
See \f[B]Arguments\f[R].
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jrunscript\f[R] command is a language-independent command-line
|
||||
script shell.
|
||||
The \f[V]jrunscript\f[R] command supports both an interactive
|
||||
(read-eval-print) mode and a batch (\f[V]-f\f[R] option) mode of script
|
||||
execution.
|
||||
By default, JavaScript is the language used, but the \f[V]-l\f[R] option
|
||||
can be used to specify a different language.
|
||||
By using Java to scripting language communication, the
|
||||
\f[V]jrunscript\f[R] command supports an exploratory programming style.
|
||||
.PP
|
||||
If JavaScript is used, then before it evaluates a user defined script,
|
||||
the \f[V]jrunscript\f[R] command initializes certain built-in functions
|
||||
and objects, which are documented in the API Specification for
|
||||
\f[V]jrunscript\f[R] JavaScript built-in functions.
|
||||
.SH OPTIONS FOR THE JRUNSCRIPT COMMAND
|
||||
.TP
|
||||
\f[V]-cp\f[R] \f[I]path\f[R] or \f[V]-classpath\f[R] \f[I]path\f[R]
|
||||
Indicates where any class files are that the script needs to access.
|
||||
.TP
|
||||
\f[V]-D\f[R]\f[I]name\f[R]\f[V]=\f[R]\f[I]value\f[R]
|
||||
Sets a Java system property.
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]flag\f[R]
|
||||
Passes \f[I]flag\f[R] directly to the Java Virtual Machine where the
|
||||
\f[V]jrunscript\f[R] command is running.
|
||||
.TP
|
||||
\f[V]-l\f[R] \f[I]language\f[R]
|
||||
Uses the specified scripting language.
|
||||
By default, JavaScript is used.
|
||||
To use other scripting languages, you must specify the corresponding
|
||||
script engine\[aq]s JAR file with the \f[V]-cp\f[R] or
|
||||
\f[V]-classpath\f[R] option.
|
||||
.TP
|
||||
\f[V]-e\f[R] \f[I]script\f[R]
|
||||
Evaluates the specified script.
|
||||
This option can be used to run one-line scripts that are specified
|
||||
completely on the command line.
|
||||
.TP
|
||||
\f[V]-encoding\f[R] \f[I]encoding\f[R]
|
||||
Specifies the character encoding used to read script files.
|
||||
.TP
|
||||
\f[V]-f\f[R] \f[I]script-file\f[R]
|
||||
Evaluates the specified script file (batch mode).
|
||||
.TP
|
||||
\f[V]-f -\f[R]
|
||||
Enters interactive mode to read and evaluate a script from standard
|
||||
input.
|
||||
.TP
|
||||
\f[V]-help\f[R] or \f[V]-?\f[R]
|
||||
Displays a help message and exits.
|
||||
.TP
|
||||
\f[V]-q\f[R]
|
||||
Lists all script engines available and exits.
|
||||
.SH ARGUMENTS
|
||||
.PP
|
||||
If arguments are present and if no \f[V]-e\f[R] or \f[V]-f\f[R] option
|
||||
is used, then the first argument is the script file and the rest of the
|
||||
arguments, if any, are passed as script arguments.
|
||||
If arguments and the \f[V]-e\f[R] or the \f[V]-f\f[R] option are used,
|
||||
then all arguments are passed as script arguments.
|
||||
If arguments \f[V]-e\f[R] and \f[V]-f\f[R] are missing, then the
|
||||
interactive mode is used.
|
||||
.SH EXAMPLE OF EXECUTING INLINE SCRIPTS
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jrunscript -e \[dq]print(\[aq]hello world\[aq])\[dq]\f[R]
|
||||
.RE
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jrunscript -e \[dq]cat(\[aq]http://www.example.com\[aq])\[dq]\f[R]
|
||||
.RE
|
||||
.SH EXAMPLE OF USING SPECIFIED LANGUAGE AND EVALUATE THE SCRIPT FILE
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jrunscript -l js -f test.js\f[R]
|
||||
.RE
|
||||
.SH EXAMPLE OF INTERACTIVE MODE
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jrunscript
|
||||
js> print(\[aq]Hello World\[rs]n\[aq]);
|
||||
Hello World
|
||||
js> 34 + 55
|
||||
89.0
|
||||
js> t = new java.lang.Thread(function() { print(\[aq]Hello World\[rs]n\[aq]); })
|
||||
Thread[Thread-0,5,main]
|
||||
js> t.start()
|
||||
js> Hello World
|
||||
|
||||
js>
|
||||
\f[R]
|
||||
.fi
|
||||
.SH RUN SCRIPT FILE WITH SCRIPT ARGUMENTS
|
||||
.PP
|
||||
In this example, the \f[V]test.js\f[R] file is the script file.
|
||||
The \f[V]arg1\f[R], \f[V]arg2\f[R], and \f[V]arg3\f[R] arguments are
|
||||
passed to the script.
|
||||
The script can access these arguments with an arguments array.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jrunscript test.js arg1 arg2 arg3\f[R]
|
||||
.RE
|
141
src/java.scripting/share/man/jrunscript.md
Normal file
141
src/java.scripting/share/man/jrunscript.md
Normal file
@ -0,0 +1,141 @@
|
||||
---
|
||||
# Copyright (c) 2006, 2024, 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.
|
||||
#
|
||||
|
||||
title: 'JRUNSCRIPT(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jrunscript - run a command-line script shell that supports interactive and
|
||||
batch modes
|
||||
|
||||
## Synopsis
|
||||
|
||||
**Note:**
|
||||
|
||||
This tool is **experimental** and unsupported. It is deprecated and will be
|
||||
removed in a future release.
|
||||
|
||||
`jrunscript` \[*options*\] \[*arguments*\]
|
||||
|
||||
*options*
|
||||
: This represents the `jrunscript` command-line options that can be used. See
|
||||
[Options for the jrunscript Command].
|
||||
|
||||
*arguments*
|
||||
: Arguments, when used, follow immediately after options or the command name.
|
||||
See [Arguments].
|
||||
|
||||
## Description
|
||||
|
||||
The `jrunscript` command is a language-independent command-line script shell.
|
||||
The `jrunscript` command supports both an interactive (read-eval-print) mode
|
||||
and a batch (`-f` option) mode of script execution. By default, JavaScript is
|
||||
the language used, but the `-l` option can be used to specify a different
|
||||
language. By using Java to scripting language communication, the `jrunscript`
|
||||
command supports an exploratory programming style.
|
||||
|
||||
If JavaScript is used, then before it evaluates a user defined script, the
|
||||
`jrunscript` command initializes certain built-in functions and objects, which
|
||||
are documented in the API Specification for `jrunscript` JavaScript built-in
|
||||
functions.
|
||||
|
||||
## Options for the jrunscript Command
|
||||
|
||||
`-cp` *path* or `-classpath` *path*
|
||||
: Indicates where any class files are that the script needs to access.
|
||||
|
||||
`-D`*name*`=`*value*
|
||||
: Sets a Java system property.
|
||||
|
||||
`-J`*flag*
|
||||
: Passes *flag* directly to the Java Virtual Machine where the `jrunscript`
|
||||
command is running.
|
||||
|
||||
`-l` *language*
|
||||
: Uses the specified scripting language. By default, JavaScript is used. To
|
||||
use other scripting languages, you must specify the corresponding script
|
||||
engine's JAR file with the `-cp` or `-classpath` option.
|
||||
|
||||
`-e` *script*
|
||||
: Evaluates the specified script. This option can be used to run one-line
|
||||
scripts that are specified completely on the command line.
|
||||
|
||||
`-encoding` *encoding*
|
||||
: Specifies the character encoding used to read script files.
|
||||
|
||||
`-f` *script-file*
|
||||
: Evaluates the specified script file (batch mode).
|
||||
|
||||
`-f -`
|
||||
: Enters interactive mode to read and evaluate a script from standard input.
|
||||
|
||||
`-help` or `-?`
|
||||
: Displays a help message and exits.
|
||||
|
||||
`-q`
|
||||
: Lists all script engines available and exits.
|
||||
|
||||
## Arguments
|
||||
|
||||
If arguments are present and if no `-e` or `-f` option is used, then the first
|
||||
argument is the script file and the rest of the arguments, if any, are passed
|
||||
as script arguments. If arguments and the `-e` or the `-f` option are used,
|
||||
then all arguments are passed as script arguments. If arguments `-e` and `-f`
|
||||
are missing, then the interactive mode is used.
|
||||
|
||||
## Example of Executing Inline Scripts
|
||||
|
||||
> `jrunscript -e "print('hello world')"`
|
||||
|
||||
> `jrunscript -e "cat('http://www.example.com')"`
|
||||
|
||||
## Example of Using Specified Language and Evaluate the Script File
|
||||
|
||||
> `jrunscript -l js -f test.js`
|
||||
|
||||
## Example of Interactive Mode
|
||||
|
||||
```
|
||||
jrunscript
|
||||
js> print('Hello World\n');
|
||||
Hello World
|
||||
js> 34 + 55
|
||||
89.0
|
||||
js> t = new java.lang.Thread(function() { print('Hello World\n'); })
|
||||
Thread[Thread-0,5,main]
|
||||
js> t.start()
|
||||
js> Hello World
|
||||
|
||||
js>
|
||||
```
|
||||
|
||||
## Run Script File with Script Arguments
|
||||
|
||||
In this example, the `test.js` file is the script file. The `arg1`, `arg2`, and
|
||||
`arg3` arguments are passed to the script. The script can access these
|
||||
arguments with an arguments array.
|
||||
|
||||
> `jrunscript test.js arg1 arg2 arg3`
|
154
src/java.security.jgss/windows/man/kinit.md
Normal file
154
src/java.security.jgss/windows/man/kinit.md
Normal file
@ -0,0 +1,154 @@
|
||||
---
|
||||
# Copyright (c) 2005, 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.
|
||||
#
|
||||
|
||||
title: 'KINIT(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
kinit - obtain and cache Kerberos ticket-granting tickets
|
||||
|
||||
## Synopsis
|
||||
|
||||
Initial ticket request:
|
||||
|
||||
`kinit` \[`-A`\] \[`-f`\] \[`-p`\] \[`-c` *cache\_name*\] \[`-l` *lifetime*\]
|
||||
\[`-r` *renewable\_time*\] \[\[`-k` \[`-t` *keytab\_file\_name*\]\]
|
||||
\[*principal*\] \[*password*\]
|
||||
|
||||
Renew a ticket:
|
||||
|
||||
`kinit` `-R` \[`-c` *cache\_name*\] \[*principal*\]
|
||||
|
||||
## Description
|
||||
|
||||
This tool is similar in functionality to the `kinit` tool that is commonly
|
||||
found in other Kerberos implementations, such as SEAM and MIT Reference
|
||||
implementations. The user must be registered as a principal with the Key
|
||||
Distribution Center (KDC) prior to running `kinit`.
|
||||
|
||||
By default, on Windows, a cache file named *USER\_HOME*`\krb5cc_`*USER\_NAME*
|
||||
is generated.
|
||||
|
||||
The identifier *USER\_HOME* is obtained from the `java.lang.System` property
|
||||
`user.home`. *USER\_NAME* is obtained from the `java.lang.System` property
|
||||
`user.name`. If *USER\_HOME* is null, the cache file is stored in the current
|
||||
directory from which the program is running. *USER\_NAME* is the operating
|
||||
system's login user name. This user name could be different than the user's
|
||||
principal name. For example, on Windows, the cache file could be
|
||||
`C:\Windows\Users\duke\krb5cc_duke`, in which `duke` is the *USER\_NAME* and
|
||||
`C:\Windows\Users\duke` is the *USER\_HOME*.
|
||||
|
||||
By default, the keytab name is retrieved from the Kerberos configuration file.
|
||||
If the keytab name isn't specified in the Kerberos configuration file, the
|
||||
kinit tool assumes that the name is *USER\_HOME*`\krb5.keytab`
|
||||
|
||||
If you don't specify the password using the *password* option on the command
|
||||
line, the `kinit` tool prompts you for the password.
|
||||
|
||||
**Note:**
|
||||
|
||||
The `password` option is provided only for testing purposes. Don't specify your
|
||||
password in a script or provide your password on the command line. Doing so
|
||||
will compromise your password.
|
||||
|
||||
## Commands
|
||||
|
||||
You can specify one of the following commands. After the command, specify the
|
||||
options for it.
|
||||
|
||||
`-A`
|
||||
: Doesn't include addresses.
|
||||
|
||||
`-f`
|
||||
: Issues a forwardable ticket.
|
||||
|
||||
`-p`
|
||||
: Issues a proxiable ticket.
|
||||
|
||||
`-c` *cache\_name*
|
||||
: The cache name (for example, `FILE:D:\temp\mykrb5cc`).
|
||||
|
||||
`-l` *lifetime*
|
||||
: Sets the lifetime of a ticket. The value can be one of "h:m[:s]",
|
||||
"NdNhNmNs", and "N". See the [MIT krb5 Time Duration definition](
|
||||
http://web.mit.edu/kerberos/krb5-1.17/doc/basic/date_format.html#duration)
|
||||
for more information.
|
||||
|
||||
`-r` *renewable\_time*
|
||||
: Sets the total lifetime that a ticket can be renewed.
|
||||
|
||||
`-R`
|
||||
: Renews a ticket.
|
||||
|
||||
`-k`
|
||||
: Uses keytab
|
||||
|
||||
`-t` *keytab\_filename*
|
||||
: The keytab name (for example, `D:\winnt\profiles\duke\krb5.keytab`).
|
||||
|
||||
*principal*
|
||||
: The principal name (for example, `duke@example.com`).
|
||||
|
||||
*password*
|
||||
: The *principal*'s Kerberos password. **Don't specify this on the command
|
||||
line or in a script.**
|
||||
|
||||
Run `kinit -help` to display the instructions above.
|
||||
|
||||
## Examples
|
||||
|
||||
Requests credentials valid for authentication from the current client host, for
|
||||
the default services, storing the credentials cache in the default location
|
||||
(`C:\Windows\Users\duke\krb5cc_duke`):
|
||||
|
||||
> `kinit duke@example.com`
|
||||
|
||||
Requests proxiable credentials for a different principal and store these
|
||||
credentials in a specified file cache:
|
||||
|
||||
> `kinit -l 1h -r 10h duke@example.com`
|
||||
|
||||
Requests a TGT for the specified principal that will expire in 1 hour but
|
||||
is renewable for up to 10 hours. Users must renew a ticket before it has
|
||||
expired. The renewed ticket can be renewed repeatedly within 10 hours
|
||||
from its initial request.
|
||||
|
||||
> `kinit -R duke@example.com`
|
||||
|
||||
Renews an existing renewable TGT for the specified principal.
|
||||
|
||||
> `kinit -p -c FILE:C:\Windows\Users\duke\credentials\krb5cc_cafebeef
|
||||
cafebeef@example.com`
|
||||
|
||||
Requests proxiable and forwardable credentials for a different principal and
|
||||
stores these credentials in a specified file cache:
|
||||
|
||||
> `kinit -f -p -c FILE:C:\Windows\Users\duke\credentials\krb5cc_cafebeef
|
||||
cafebeef@example.com`
|
||||
|
||||
Displays the help menu for the `kinit` tool:
|
||||
|
||||
> `kinit -help`
|
98
src/java.security.jgss/windows/man/klist.md
Normal file
98
src/java.security.jgss/windows/man/klist.md
Normal file
@ -0,0 +1,98 @@
|
||||
---
|
||||
# Copyright (c) 2005, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'KLIST(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
klist - display the entries in the local credentials cache and key table
|
||||
|
||||
## Synopsis
|
||||
|
||||
`klist` \[`-c` \[`-f`\] \[`-e`\] \[`-a` \[`-n`\]\]\] \[`-k` \[`-t`\] \[`-K`\]\]
|
||||
\[*name*\] \[`-help`\]
|
||||
|
||||
## Description
|
||||
|
||||
The `klist` tool displays the entries in the local credentials cache and key
|
||||
table. After you modify the credentials cache with the `kinit` tool or modify
|
||||
the keytab with the `ktab` tool, the only way to verify the changes is to view
|
||||
the contents of the credentials cache or keytab using the `klist` tool. The
|
||||
`klist` tool doesn't change the Kerberos database.
|
||||
|
||||
## Commands
|
||||
|
||||
`-c`
|
||||
: Specifies that the credential cache is to be listed.
|
||||
|
||||
The following are the options for credential cache entries:
|
||||
|
||||
`-f`
|
||||
: Show credential flags.
|
||||
|
||||
`-e`
|
||||
: Show the encryption type.
|
||||
|
||||
`-a`
|
||||
: Show addresses.
|
||||
|
||||
`-n`
|
||||
: If the `-a` option is specified, don't reverse resolve addresses.
|
||||
|
||||
`-k`
|
||||
: Specifies that key tab is to be listed.
|
||||
|
||||
List the keytab entries. The following are the options for keytab entries:
|
||||
|
||||
`-t`
|
||||
: Show keytab entry timestamps.
|
||||
|
||||
`-K`
|
||||
: Show keytab entry DES keys.
|
||||
|
||||
`-e`
|
||||
: Shows keytab entry key type.
|
||||
|
||||
*name*
|
||||
: Specifies the credential cache name or the keytab name. File-based cache or
|
||||
keytab's prefix is `FILE:`. If the name isn't specified, the `klist` tool
|
||||
uses default values for the cache name and keytab. The `kinit`
|
||||
documentation lists these default values.
|
||||
|
||||
`-help`
|
||||
: Displays instructions.
|
||||
|
||||
## Examples
|
||||
|
||||
List entries in the keytable specified including keytab entry timestamps and
|
||||
DES keys:
|
||||
|
||||
> `klist -k -t -K FILE:\temp\mykrb5cc`
|
||||
|
||||
List entries in the credentials cache specified including credentials flag and
|
||||
address list:
|
||||
|
||||
> `klist -c -f FILE:\temp\mykrb5cc`
|
134
src/java.security.jgss/windows/man/ktab.md
Normal file
134
src/java.security.jgss/windows/man/ktab.md
Normal file
@ -0,0 +1,134 @@
|
||||
---
|
||||
# Copyright (c) 2005, 2022, 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.
|
||||
#
|
||||
|
||||
title: 'KTAB(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
ktab - manage the principal names and service keys stored in a local key
|
||||
table
|
||||
|
||||
## Synopsis
|
||||
|
||||
`ktab` \[*commands*\] \[*options*\]
|
||||
|
||||
\[*commands*\] \[*options*\]
|
||||
: Lists the keytab name and entries, adds new key entries to the keytab,
|
||||
deletes existing key entries, and displays instructions. See [Commands and
|
||||
Options].
|
||||
|
||||
## Description
|
||||
|
||||
The `ktab` enables the user to manage the principal names and service keys
|
||||
stored in a local key table. Principal and key pairs listed in the keytab
|
||||
enable services running on a host to authenticate themselves to the Key
|
||||
Distribution Center (KDC).
|
||||
|
||||
Before configuring a server to use Kerberos, you must set up a keytab on the
|
||||
host running the server. Note that any updates made to the keytab using the
|
||||
`ktab` tool don't affect the Kerberos database.
|
||||
|
||||
A *keytab* is a host's copy of its own keylist, which is analogous to a user's
|
||||
password. An application server that needs to authenticate itself to the Key
|
||||
Distribution Center (KDC) must have a keytab which contains its own principal
|
||||
and key. If you change the keys in the keytab, you must also make the
|
||||
corresponding changes to the Kerberos database. The `ktab` tool enables you to
|
||||
list, add, update or delete principal names and key pairs in the key table.
|
||||
None of these operations affect the Kerberos database.
|
||||
|
||||
## Security Alert
|
||||
|
||||
Don't specify your password on the command line. Doing so can be a security
|
||||
risk. For example, an attacker could discover your password while running the
|
||||
UNIX `ps` command.
|
||||
|
||||
Just as it is important for users to protect their passwords, it is equally
|
||||
important for hosts to protect their keytabs. You should always store keytab
|
||||
files on the local disk and make them readable only by root. You should never
|
||||
send a keytab file over a network in the clear.
|
||||
|
||||
## Commands and Options
|
||||
|
||||
`-l` \[`-e`\] \[`-t`\]
|
||||
: Lists the keytab name and entries. When `-e` is specified, the encryption
|
||||
type for each entry is displayed. When `-t` is specified, the timestamp for
|
||||
each entry is displayed.
|
||||
|
||||
`-a` *principal\_name* \[*password*\] \[`-n` *kvno*\] \[`-s` *salt* \| `-f`\] \[`-append`\]
|
||||
: Adds new key entries to the keytab for the given principal name with an
|
||||
optional *password*. If a *kvno* is specified, new keys' Key Version
|
||||
Numbers equal to the value, otherwise, automatically incrementing the Key
|
||||
Version Numbers. If *salt* is specified, it will be used instead of the
|
||||
default salt. If `-f` is specified, the KDC will be contacted to
|
||||
fetch the salt. If `-append` is specified, new keys are appended to the
|
||||
keytab, otherwise, old keys for the same principal are removed.
|
||||
|
||||
No changes are made to the Kerberos database. **Don't specify the password
|
||||
on the command line or in a script.** This tool will prompt for a password
|
||||
if it isn't specified.
|
||||
|
||||
`-d` *principal\_name* \[`-f`\] \[`-e` *etype*\] \[*kvno* \| `all`\| `old`\]
|
||||
: Deletes key entries from the keytab for the specified principal. No changes
|
||||
are made to the Kerberos database.
|
||||
|
||||
- If *kvno* is specified, the tool deletes keys whose Key Version Numbers
|
||||
match kvno. If `all` is specified, delete all keys.
|
||||
|
||||
- If `old` is specified, the tool deletes all keys except those with the
|
||||
highest *kvno*. The default action is `all`.
|
||||
|
||||
- If *etype* is specified, the tool only deletes keys of this encryption
|
||||
type. *etype* should be specified as the numeric value *etype* defined
|
||||
in RFC 3961, section 8. A prompt to confirm the deletion is displayed
|
||||
unless `-f` is specified.
|
||||
|
||||
When *etype* is provided, only the entry matching this encryption type is
|
||||
deleted. Otherwise, all entries are deleted.
|
||||
|
||||
`-help`
|
||||
: Displays instructions.
|
||||
|
||||
## Common Options
|
||||
|
||||
This option can be used with the `-l`, `-a` or `-d` commands.
|
||||
|
||||
`-k` *keytab name*
|
||||
: Specifies the keytab name and path with the `FILE:` prefix.
|
||||
|
||||
## Examples
|
||||
|
||||
- Lists all the entries in the default keytable
|
||||
|
||||
> `ktab -l`
|
||||
|
||||
- Adds a new principal to the key table (note that you will be prompted for
|
||||
your password)
|
||||
|
||||
> `ktab -a duke@example.com`
|
||||
|
||||
- Deletes a principal from the key table
|
||||
|
||||
> `ktab -d duke@example.com`
|
75
src/jdk.accessibility/windows/man/jabswitch.md
Normal file
75
src/jdk.accessibility/windows/man/jabswitch.md
Normal file
@ -0,0 +1,75 @@
|
||||
---
|
||||
# Copyright (c) 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.
|
||||
#
|
||||
|
||||
title: 'JABSWITCH(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jabswitch - enable or disable the Java Access Bridge
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jabswitch` \[ -enable|/enable | -disable|/disable | -version|/version | -?|/? \]
|
||||
|
||||
## Options
|
||||
|
||||
`-enable`
|
||||
or
|
||||
`/enable`
|
||||
: Enables the Java Access Bridge
|
||||
|
||||
`-disable`
|
||||
or
|
||||
`/disable`
|
||||
: Disables the Java Access Bridge
|
||||
|
||||
`-version`
|
||||
or
|
||||
`/version`
|
||||
: Displays version information for the `jabswitch` command.
|
||||
|
||||
`-?`
|
||||
or
|
||||
`/?`
|
||||
: Displays usage information for the `jabswitch` command.
|
||||
|
||||
## Description
|
||||
|
||||
The `jabswitch` command is a utility program that enables the
|
||||
Java Access Bridge to be loaded by the JDK on Windows platforms.
|
||||
The Java Access Bridge is used by Assistive Technologies
|
||||
to interact with Java Accessibility APIs of the Java SE platform.
|
||||
To have any effect, the assistive technology must support the Java Access Bridge.
|
||||
|
||||
This command creates or updates a file named `.accessibility.properties`,
|
||||
in the user's home directory. When selecting the `-enable` option, the file
|
||||
is populated with the information needed to load the Java Access Bridge.
|
||||
This file is then read and used in accordance with the specification of the
|
||||
Java SE
|
||||
[`java.awt.Toolkit.getDefaultToolkit()`](../../api/java.desktop/java/awt/Toolkit.html#getDefaultToolkit())
|
||||
API, on initialization.
|
||||
|
||||
Note: This command is only provided with JDK for Windows.
|
249
src/jdk.accessibility/windows/man/jaccessinspector.md
Normal file
249
src/jdk.accessibility/windows/man/jaccessinspector.md
Normal file
@ -0,0 +1,249 @@
|
||||
---
|
||||
# Copyright (c) 2017, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JACCESSINSPECTOR(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jaccessinspector - examine accessible information about the objects in the
|
||||
Java Virtual Machine using the Java Accessibility Utilities API
|
||||
|
||||
## Description
|
||||
|
||||
The `jaccessinspector` tool lets you select different methods for examining the
|
||||
object accessibility information:
|
||||
|
||||
- When events occur such as a change of focus, mouse movement, property
|
||||
change, menu selection, and the display of a popup menu
|
||||
|
||||
- When you press the F1 key when the mouse is over an object, or F2 when the
|
||||
mouse is over a window
|
||||
|
||||
After an object has been selected for examination, the `jaccessinspector` tool
|
||||
displays the results of calling Java Accessibility API methods on that object.
|
||||
|
||||
## Running the jaccessinspector Tool
|
||||
|
||||
To use the `jaccessinspector` tool, launch the `jaccessinspector` tool after
|
||||
launching a Java application. To launch `jaccessinspector`, run the following
|
||||
command:
|
||||
|
||||
**Note:**
|
||||
|
||||
`JAVA_HOME` is an environment variable and should be set to the path of the JDK
|
||||
or JRE, such as `c:\Program Files\Java\jdk-10`.
|
||||
|
||||
> `%JAVA_HOME%\bin\jaccessinspector.exe`
|
||||
|
||||
You now have two windows open: The Java application window and the
|
||||
`jaccessinspector` window. The `jaccessinspector` window contains five menus:
|
||||
|
||||
- [File Menu]
|
||||
|
||||
- [UpdateSettings Menu]
|
||||
|
||||
- [JavaEvents Menu]
|
||||
|
||||
- [AccessibilityEvents Menu]
|
||||
|
||||
- [Options Menu]
|
||||
|
||||
The items in **UpdateSettings**, **JavaEvents**, and **AccessibilityEvents**
|
||||
menus let you query Java applications in a variety of ways.
|
||||
|
||||
## File Menu
|
||||
|
||||
This section describes the **File** menu items.
|
||||
|
||||
AccessBridge DLL Loaded
|
||||
: Enables and disables AccessBridge DLL Loaded.
|
||||
|
||||
Exit
|
||||
: Exits from the tool.
|
||||
|
||||
## UpdateSettings Menu
|
||||
|
||||
This section describes the **UpdateSettings** menu items.
|
||||
|
||||
Update from Mouse
|
||||
: Determines the x- and y-coordinates of the mouse (assuming the
|
||||
`jaccessinspector` tool window is topmost) when the mouse has stopped
|
||||
moving, and then queries the Java application for the accessible object
|
||||
underneath the mouse, dumping the output into the `jaccessinspector`
|
||||
window.
|
||||
|
||||
Update with F2 (Mouse HWND)
|
||||
: Determines the x- and y-coordinates of the mouse (assuming the
|
||||
`jaccessinspector` tool window is topmost), and then queries the Java
|
||||
application for the accessible object of the HWND underneath the mouse,
|
||||
dumping the output into the `jaccessinspector` window.
|
||||
|
||||
Update with F1 (Mouse Point)
|
||||
: Determines the x- and y-coordinates of the mouse (assuming the
|
||||
`jaccessinspector` tool window is topmost), and then queries the Java
|
||||
application for the accessible object underneath the cursor, dumping the
|
||||
output into the `jaccessinspector` window.
|
||||
|
||||
## JavaEvents Menu
|
||||
|
||||
This section describes the **JavaEvents** menu items.
|
||||
|
||||
Track Mouse Events
|
||||
: Registers with the Java application all Java Mouse Entered events, and upon
|
||||
receiving one, queries the object that was entered by the cursor and dumps
|
||||
the output into the `jaccessinspector` window.
|
||||
|
||||
**Note:** If the mouse is moved quickly, then there may be some delay
|
||||
before the displayed information is updated.
|
||||
|
||||
Track Focus Events
|
||||
: Registers with the Java application all Java Focus Gained events, and upon
|
||||
receiving an event, queries the object that received the focus and dumps
|
||||
the output into the `jaccessinspector` window.
|
||||
|
||||
Track Caret Events
|
||||
: Register with the Java application all Java Caret Update events, and upon
|
||||
receiving an event, queries the object in which the caret was updated, and
|
||||
dumps the output into the `jaccessinspector` window.
|
||||
|
||||
**Note:** Because objects that contain carets are almost by definition
|
||||
objects that are rich text objects, this won't seem as responsive as the
|
||||
other event tracking options. In real use, one would make fewer
|
||||
accessibility calls in Caret Update situations (for example, just get the
|
||||
new letter, word, sentence at the caret location), which would be
|
||||
significantly faster.
|
||||
|
||||
Track Menu Selected \| Deselected \| Cancelled Events
|
||||
: Registers with the Java application all Menu events, and upon receiving an
|
||||
event, queries the object in which the caret was updated, and dumps the
|
||||
output into the `jaccessinspector` window.
|
||||
|
||||
Track Popup Visible \| Invisible \| Cancelled Events
|
||||
: Registers with the Java application all Popup Menu events, and upon
|
||||
receiving an event, queries the object in which the caret was updated, and
|
||||
dumps the output into the `jaccessinspector` window.
|
||||
|
||||
Track Shutdown Events
|
||||
: Registers with the Java application to receive a Property Changed event
|
||||
when a Java application terminates.
|
||||
|
||||
## AccessibilityEvents Menu
|
||||
|
||||
This section describes the **AccessibilityEvents** menu items.
|
||||
|
||||
**Note:** The items listed in the **AccessibilityEvents** menu are the most
|
||||
important for testing applications, especially for assistive technology
|
||||
applications.
|
||||
|
||||
Track Name Property Events
|
||||
: Registers with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Name property has changed,
|
||||
and upon receiving an event, dumps the output into the scrolling window,
|
||||
along with information about the property that changed.
|
||||
|
||||
Track Description Property Events
|
||||
: Register with the Java application for all Java Property Changed events
|
||||
specifically on accessible objects in which the Description property has
|
||||
changed, and upon receiving an event, dumps the output into the
|
||||
`jaccessinspector` window, along with information about the property that
|
||||
changed.
|
||||
|
||||
Track State Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the State property has changed,
|
||||
and upon receiving an event, dumps the output into the `jaccessinspector`
|
||||
window, along with information about the property that changed.
|
||||
|
||||
Track Value Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Value property has changed,
|
||||
and upon receiving an event, dumps the output into the scrolling window,
|
||||
along with information about the property that changed.
|
||||
|
||||
Track Selection Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Selection property has
|
||||
changed, and upon receiving an event, dumps the output into the
|
||||
`jaccessinspector` window, along with information about the property that
|
||||
changed.
|
||||
|
||||
Track Text Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Text property has changed,
|
||||
and upon receiving one event, dump the output into the `jaccessinspector`
|
||||
window, along with information about the property that changed.
|
||||
|
||||
Track Caret Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Caret property has changed,
|
||||
and upon receiving an event, dumps the output into the `jaccessinspector`
|
||||
window, along with information about the property that changed.
|
||||
|
||||
Track VisibleData Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the VisibleData property has
|
||||
changed, and upon receiving an event, dumps the output into the
|
||||
`jaccessinspector` window, along with information about the property that
|
||||
changed.
|
||||
|
||||
Track Child Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Child property has changed,
|
||||
and upon receiving an event, dumps the output into the `jaccessinspector`
|
||||
window, along with information about the property that changed.
|
||||
|
||||
Track Active Descendent Property Events
|
||||
: Register with the Java application all Java Property Changed events
|
||||
specifically on accessible objects in which the Active Descendent property
|
||||
has changed, and upon receiving an event, dumps the output into the
|
||||
`jaccessinspector` window, along with information about the property that
|
||||
changed.
|
||||
|
||||
Track Table Model Change Property Events
|
||||
: Register with the Java application all Property Changed events specifically
|
||||
on accessible objects in which the Table Model Change property has changed,
|
||||
and upon receiving an event, dumps the output into the `jaccessinspector`
|
||||
window, along with information about the property that changed.
|
||||
|
||||
## Options Menu
|
||||
|
||||
This section describes the **Options** menu items.
|
||||
|
||||
Monitor the same events as JAWS
|
||||
: Enables monitoring of only the events also monitored by JAWS.
|
||||
|
||||
Monitor All Events
|
||||
: Enables monitoring of all events in the `jaccessinspector` window.
|
||||
|
||||
Reset All Events
|
||||
: Resets the selected Options to the default settings.
|
||||
|
||||
Go To Message
|
||||
: Opens the **Go To Message** dialog that lets you display a logged message
|
||||
by entering its message number.
|
||||
|
||||
Clear Message History
|
||||
: Clears the history of logged messages from the `jaccessinspector` window.
|
71
src/jdk.accessibility/windows/man/jaccesswalker.md
Normal file
71
src/jdk.accessibility/windows/man/jaccesswalker.md
Normal file
@ -0,0 +1,71 @@
|
||||
---
|
||||
# Copyright (c) 2017, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JACCESSWALKER(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jaccesswalker - navigate through the component trees in a particular Java
|
||||
Virtual Machine and present the hierarchy in a tree view
|
||||
|
||||
## Description
|
||||
|
||||
You select a node in the tree, and from the **Panels** menu, you select
|
||||
**Accessibility API Panel**. The `jaccesswalker` tool shows you the
|
||||
accessibility information for the object in the window.
|
||||
|
||||
## Running the jaccesswalker Tool
|
||||
|
||||
To use `jaccesswalker`, launch the `jaccesswalker` tool after launching a Java
|
||||
application. For example, to launch `jaccesswalker`, enter the following
|
||||
command:
|
||||
|
||||
**Note:**
|
||||
|
||||
`JAVA_HOME` is an environment variable and should be set to the path of the JDK
|
||||
or JRE, such as, `c:\Program Files\Java\jdk-10`.
|
||||
|
||||
> `%JAVA_HOME%\bin\jaccesswalker.exe`
|
||||
|
||||
You now have two windows open: The Java application window, and the window for
|
||||
the `jaccesswalker` tool. There are two tasks that you can do with
|
||||
`jaccesswalker` . You can build a tree view of the Java applications' GUI
|
||||
hierarchy, and you can query the Java Accessibility API information of a
|
||||
particular element in the GUI hierarchy.
|
||||
|
||||
## Building the GUI Hierarchy
|
||||
|
||||
From the **File** menu, select **Refresh Tree** menu. The `jaccesswalker` tool
|
||||
builds a list of the top-level windows belonging to Java applications. The tool
|
||||
then recursively queries the elements in those windows, and builds a tree of
|
||||
all of the GUI components in all of the Java applications in all of the JVMs
|
||||
running in the system.
|
||||
|
||||
## Examining a GUI Component
|
||||
|
||||
After a GUI tree is built, you can view detailed accessibility information
|
||||
about an individual GUI component by selecting it in the tree, then selecting
|
||||
**Panels**, and then **Display Accessibility Information**.
|
File diff suppressed because it is too large
Load Diff
1952
src/jdk.compiler/share/man/javac.md
Normal file
1952
src/jdk.compiler/share/man/javac.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,90 +0,0 @@
|
||||
.\" Copyright (c) 1997, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "SERIALVER" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
serialver - return the \f[V]serialVersionUID\f[R] for one or more
|
||||
classes in a form suitable for copying into an evolving class
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]serialver\f[R] [\f[I]options\f[R]] [\f[I]classnames\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the command-line options for the \f[V]serialver\f[R]
|
||||
command.
|
||||
See \f[B]Options for serialver\f[R].
|
||||
.TP
|
||||
\f[I]classnames\f[R]
|
||||
The classes for which \f[V]serialVersionUID\f[R] is to be returned.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]serialver\f[R] command returns the \f[V]serialVersionUID\f[R]
|
||||
for one or more classes in a form suitable for copying into an evolving
|
||||
class.
|
||||
When called with no arguments, the \f[V]serialver\f[R] command prints a
|
||||
usage line.
|
||||
.SH OPTIONS FOR SERIALVER
|
||||
.TP
|
||||
\f[V]-classpath\f[R] \f[I]path-files\f[R]
|
||||
Sets the search path for application classes and resources.
|
||||
Separate classes and resources with a colon (:).
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]option\f[R]
|
||||
Passes the specified \f[I]option\f[R] to the Java Virtual Machine, where
|
||||
\f[I]option\f[R] is one of the options described on the reference page
|
||||
for the Java application launcher.
|
||||
For example, \f[V]-J-Xms48m\f[R] sets the startup memory to 48 MB.
|
||||
.SH NOTES
|
||||
.PP
|
||||
The \f[V]serialver\f[R] command loads and initializes the specified
|
||||
classes in its virtual machine, and by default, it doesn\[aq]t set a
|
||||
security manager.
|
||||
If the \f[V]serialver\f[R] command is to be run with untrusted classes,
|
||||
then a security manager can be set with the following option:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]-J-Djava.security.manager\f[R]
|
||||
.RE
|
||||
.PP
|
||||
When necessary, a security policy can be specified with the following
|
||||
option:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]-J-Djava.security.policy=\f[R]\f[I]policy_file\f[R]
|
||||
.RE
|
74
src/jdk.compiler/share/man/serialver.md
Normal file
74
src/jdk.compiler/share/man/serialver.md
Normal file
@ -0,0 +1,74 @@
|
||||
---
|
||||
# Copyright (c) 1997, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'SERIALVER(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
serialver - return the `serialVersionUID` for one or more classes in a form
|
||||
suitable for copying into an evolving class
|
||||
|
||||
## Synopsis
|
||||
|
||||
`serialver` \[*options*\] \[*classnames*\]
|
||||
|
||||
*options*
|
||||
: This represents the command-line options for the `serialver` command. See
|
||||
[Options for serialver].
|
||||
|
||||
*classnames*
|
||||
: The classes for which `serialVersionUID` is to be returned.
|
||||
|
||||
## Description
|
||||
|
||||
The `serialver` command returns the `serialVersionUID` for one or more classes
|
||||
in a form suitable for copying into an evolving class. When called with no
|
||||
arguments, the `serialver` command prints a usage line.
|
||||
|
||||
## Options for serialver
|
||||
|
||||
`-classpath` *path-files*
|
||||
: Sets the search path for application classes and resources. Separate
|
||||
classes and resources with a colon (:).
|
||||
|
||||
`-J`*option*
|
||||
: Passes the specified *option* to the Java Virtual Machine, where *option*
|
||||
is one of the options described on the reference page for the Java
|
||||
application launcher. For example, `-J-Xms48m` sets the startup memory to
|
||||
48 MB.
|
||||
|
||||
## Notes
|
||||
|
||||
The `serialver` command loads and initializes the specified classes in its
|
||||
virtual machine, and by default, it doesn't set a security manager. If the
|
||||
`serialver` command is to be run with untrusted classes, then a security
|
||||
manager can be set with the following option:
|
||||
|
||||
> `-J-Djava.security.manager`
|
||||
|
||||
When necessary, a security policy can be specified with the following option:
|
||||
|
||||
> `-J-Djava.security.policy=`*policy\_file*
|
@ -1,218 +0,0 @@
|
||||
.\" Copyright (c) 2019, 2024, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JHSDB" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jhsdb - attach to a Java process or launch a postmortem debugger to
|
||||
analyze the content of a core dump from a crashed Java Virtual Machine
|
||||
(JVM)
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]WARNING:\f[R] The \f[V]debugd\f[R] subcommand and
|
||||
\f[V]--connect\f[R] options are deprecated.
|
||||
They will be removed in a future release.
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]clhsdb\f[R] [\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R]
|
||||
\f[I]coredump\f[R]]
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]hsdb\f[R] [\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R]
|
||||
\f[I]coredump\f[R]]
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]debugd\f[R] (\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R]
|
||||
\f[I]coredump\f[R]) [\f[I]options\f[R]]
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]jstack\f[R] (\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R] \f[I]coredump\f[R]
|
||||
| \f[V]--connect\f[R] \f[I][server-id\[at]]debugd-host\f[R])
|
||||
[\f[I]options\f[R]]
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]jmap\f[R] (\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R] \f[I]coredump\f[R]
|
||||
| \f[V]--connect\f[R] \f[I][server-id\[at]]debugd-host\f[R])
|
||||
[\f[I]options\f[R]]
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]jinfo\f[R] (\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R] \f[I]coredump\f[R]
|
||||
| \f[V]--connect\f[R] \f[I][server-id\[at]]debugd-host\f[R])
|
||||
[\f[I]options\f[R]]
|
||||
.PP
|
||||
\f[V]jhsdb\f[R] \f[V]jsnap\f[R] (\f[V]--pid\f[R] \f[I]pid\f[R] |
|
||||
\f[V]--exe\f[R] \f[I]executable\f[R] \f[V]--core\f[R] \f[I]coredump\f[R]
|
||||
| \f[V]--connect\f[R] \f[I][server-id\[at]]debugd-host\f[R])
|
||||
[\f[I]options\f[R]]
|
||||
.TP
|
||||
\f[I]pid\f[R]
|
||||
The process ID to which the \f[V]jhsdb\f[R] tool should attach.
|
||||
The process must be a Java process.
|
||||
To get a list of Java processes running on a machine, use the
|
||||
\f[V]ps\f[R] command or, if the JVM processes are not running in a
|
||||
separate docker instance, the \f[B]jps\f[R] command.
|
||||
.TP
|
||||
\f[I]executable\f[R]
|
||||
The Java executable file from which the core dump was produced.
|
||||
.TP
|
||||
\f[I]coredump\f[R]
|
||||
The core file to which the \f[V]jhsdb\f[R] tool should attach.
|
||||
.TP
|
||||
\f[I][server-id\[at]]debugd-host\f[R]
|
||||
An optional server ID and the address of the remote debug server
|
||||
(debugd).
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
The command-line options for a \f[V]jhsdb\f[R] mode.
|
||||
See \f[B]Options for the debugd Mode\f[R], \f[B]Options for the jstack
|
||||
Mode\f[R], \f[B]Options for the jmap Mode\f[R], \f[B]Options for the
|
||||
jinfo Mode\f[R], and \f[B]Options for the jsnap Mode\f[R].
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
Either the \f[I]pid\f[R] or the pair of \f[I]executable\f[R] and
|
||||
\f[I]core\f[R] files or the \f[I][server-id\[at]]debugd-host\f[R] must
|
||||
be provided for \f[V]debugd\f[R], \f[V]jstack\f[R], \f[V]jmap\f[R],
|
||||
\f[V]jinfo\f[R] and \f[V]jsnap\f[R] modes.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
You can use the \f[V]jhsdb\f[R] tool to attach to a Java process or to
|
||||
launch a postmortem debugger to analyze the content of a core-dump from
|
||||
a crashed Java Virtual Machine (JVM).
|
||||
This command is experimental and unsupported.
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
Attaching the \f[V]jhsdb\f[R] tool to a live process will cause the
|
||||
process to hang and the process will probably crash when the debugger
|
||||
detaches.
|
||||
.PP
|
||||
The \f[V]jhsdb\f[R] tool can be launched in any one of the following
|
||||
modes:
|
||||
.TP
|
||||
\f[V]jhsdb clhsdb\f[R]
|
||||
Starts the interactive command-line debugger.
|
||||
.TP
|
||||
\f[V]jhsdb hsdb\f[R]
|
||||
Starts the interactive GUI debugger.
|
||||
.TP
|
||||
\f[V]jhsdb debugd\f[R]
|
||||
Starts the remote debug server.
|
||||
.TP
|
||||
\f[V]jhsdb jstack\f[R]
|
||||
Prints stack and locks information.
|
||||
.TP
|
||||
\f[V]jhsdb jmap\f[R]
|
||||
Prints heap information.
|
||||
.TP
|
||||
\f[V]jhsdb jinfo\f[R]
|
||||
Prints basic JVM information.
|
||||
.TP
|
||||
\f[V]jhsdb jsnap\f[R]
|
||||
Prints performance counter information.
|
||||
.TP
|
||||
\f[V]jhsdb\f[R] \f[I]command\f[R] \f[V]--help\f[R]
|
||||
Displays the options available for the \f[I]command\f[R].
|
||||
.SH OPTIONS FOR THE DEBUGD MODE
|
||||
.TP
|
||||
\f[V]--serverid\f[R] \f[I]server-id\f[R]
|
||||
An optional unique ID for this debug server.
|
||||
This is required if multiple debug servers are run on the same machine.
|
||||
.TP
|
||||
\f[V]--rmiport\f[R] \f[I]port\f[R]
|
||||
Sets the port number to which the RMI connector is bound.
|
||||
If not specified a random available port is used.
|
||||
.TP
|
||||
\f[V]--registryport\f[R] \f[I]port\f[R]
|
||||
Sets the RMI registry port.
|
||||
This option overrides the system property
|
||||
\[aq]sun.jvm.hotspot.rmi.port\[aq].
|
||||
If not specified, the system property is used.
|
||||
If the system property is not set, the default port 1099 is used.
|
||||
.TP
|
||||
\f[V]--hostname\f[R] \f[I]hostname\f[R]
|
||||
Sets the hostname the RMI connector is bound.
|
||||
The value could be a hostname or an IPv4/IPv6 address.
|
||||
This option overrides the system property
|
||||
\[aq]java.rmi.server.hostname\[aq].
|
||||
If not specified, the system property is used.
|
||||
If the system property is not set, a system hostname is used.
|
||||
.SH OPTIONS FOR THE JINFO MODE
|
||||
.TP
|
||||
\f[V]--flags\f[R]
|
||||
Prints the VM flags.
|
||||
.TP
|
||||
\f[V]--sysprops\f[R]
|
||||
Prints the Java system properties.
|
||||
.TP
|
||||
no option
|
||||
Prints the VM flags and the Java system properties.
|
||||
.SH OPTIONS FOR THE JMAP MODE
|
||||
.TP
|
||||
no option
|
||||
Prints the same information as Solaris \f[V]pmap\f[R].
|
||||
.TP
|
||||
\f[V]--heap\f[R]
|
||||
Prints the \f[V]java\f[R] heap summary.
|
||||
.TP
|
||||
\f[V]--binaryheap\f[R]
|
||||
Dumps the \f[V]java\f[R] heap in \f[V]hprof\f[R] binary format.
|
||||
.TP
|
||||
\f[V]--dumpfile\f[R] \f[I]name\f[R]
|
||||
The name of the dumpfile.
|
||||
.TP
|
||||
\f[V]--histo\f[R]
|
||||
Prints the histogram of \f[V]java\f[R] object heap.
|
||||
.TP
|
||||
\f[V]--clstats\f[R]
|
||||
Prints the class loader statistics.
|
||||
.TP
|
||||
\f[V]--finalizerinfo\f[R]
|
||||
Prints the information on objects awaiting finalization.
|
||||
.SH OPTIONS FOR THE JSTACK MODE
|
||||
.TP
|
||||
\f[V]--locks\f[R]
|
||||
Prints the \f[V]java.util.concurrent\f[R] locks information.
|
||||
.TP
|
||||
\f[V]--mixed\f[R]
|
||||
Attempts to print both \f[V]java\f[R] and native frames if the platform
|
||||
allows it.
|
||||
.SH OPTIONS FOR THE JSNAP MODE
|
||||
.TP
|
||||
\f[V]--all\f[R]
|
||||
Prints all performance counters.
|
186
src/jdk.hotspot.agent/share/man/jhsdb.md
Normal file
186
src/jdk.hotspot.agent/share/man/jhsdb.md
Normal file
@ -0,0 +1,186 @@
|
||||
---
|
||||
# Copyright (c) 2019, 2024, 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.
|
||||
#
|
||||
|
||||
title: 'JHSDB(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jhsdb - attach to a Java process or launch a postmortem debugger to analyze
|
||||
the content of a core dump from a crashed Java Virtual Machine (JVM)
|
||||
|
||||
## Synopsis
|
||||
|
||||
**WARNING:** The `debugd` subcommand and `--connect` options are deprecated. They will be removed in a future release.
|
||||
|
||||
`jhsdb` `clhsdb` \[`--pid` *pid* \| `--exe` *executable* `--core` *coredump*\]
|
||||
|
||||
`jhsdb` `hsdb` \[`--pid` *pid* \| `--exe` *executable* `--core` *coredump*\]
|
||||
|
||||
`jhsdb` `debugd` (`--pid` *pid* \| `--exe` *executable* `--core` *coredump*)
|
||||
\[*options*\]
|
||||
|
||||
`jhsdb` `jstack` (`--pid` *pid* \| `--exe` *executable* `--core` *coredump* \|
|
||||
`--connect` *\[server-id@\]debugd-host*) \[*options*\]
|
||||
|
||||
`jhsdb` `jmap` (`--pid` *pid* \| `--exe` *executable* `--core` *coredump* \|
|
||||
`--connect` *\[server-id@\]debugd-host*) \[*options*\]
|
||||
|
||||
`jhsdb` `jinfo` (`--pid` *pid* \| `--exe` *executable* `--core` *coredump* \|
|
||||
`--connect` *\[server-id@\]debugd-host*) \[*options*\]
|
||||
|
||||
`jhsdb` `jsnap` (`--pid` *pid* \| `--exe` *executable* `--core` *coredump* \|
|
||||
`--connect` *\[server-id@\]debugd-host*) \[*options*\]
|
||||
|
||||
*pid*
|
||||
: The process ID to which the `jhsdb` tool should attach. The process must be
|
||||
a Java process. To get a list of Java processes running on a machine, use
|
||||
the `ps` command or, if the JVM processes are not running in a separate
|
||||
docker instance, the [jps](jps.html) command.
|
||||
|
||||
*executable*
|
||||
: The Java executable file from which the core dump was produced.
|
||||
|
||||
*coredump*
|
||||
: The core file to which the `jhsdb` tool should attach.
|
||||
|
||||
*\[server-id@\]debugd-host*
|
||||
: An optional server ID and the address of the remote debug server (debugd).
|
||||
|
||||
*options*
|
||||
: The command-line options for a `jhsdb` mode. See [Options for the debugd Mode],
|
||||
[Options for the jstack Mode], [Options for the jmap Mode],
|
||||
[Options for the jinfo Mode], and [Options for the jsnap Mode].
|
||||
|
||||
**Note:**
|
||||
|
||||
Either the *pid* or the pair of *executable* and *core* files or
|
||||
the *\[server-id@\]debugd-host* must be provided for `debugd`, `jstack`, `jmap`,
|
||||
`jinfo` and `jsnap` modes.
|
||||
|
||||
## Description
|
||||
|
||||
You can use the `jhsdb` tool to attach to a Java process or to launch a
|
||||
postmortem debugger to analyze the content of a core-dump from a crashed Java
|
||||
Virtual Machine (JVM). This command is experimental and unsupported.
|
||||
|
||||
**Note:**
|
||||
|
||||
Attaching the `jhsdb` tool to a live process will cause the process to hang and
|
||||
the process will probably crash when the debugger detaches.
|
||||
|
||||
The `jhsdb` tool can be launched in any one of the following modes:
|
||||
|
||||
`jhsdb clhsdb`
|
||||
: Starts the interactive command-line debugger.
|
||||
|
||||
`jhsdb hsdb`
|
||||
: Starts the interactive GUI debugger.
|
||||
|
||||
`jhsdb debugd`
|
||||
: Starts the remote debug server.
|
||||
|
||||
`jhsdb jstack`
|
||||
: Prints stack and locks information.
|
||||
|
||||
`jhsdb jmap`
|
||||
: Prints heap information.
|
||||
|
||||
`jhsdb jinfo`
|
||||
: Prints basic JVM information.
|
||||
|
||||
`jhsdb jsnap`
|
||||
: Prints performance counter information.
|
||||
|
||||
`jhsdb` *command* `--help`
|
||||
: Displays the options available for the *command*.
|
||||
|
||||
## Options for the debugd Mode
|
||||
|
||||
`--serverid` *server-id*
|
||||
: An optional unique ID for this debug server. This is required if multiple
|
||||
debug servers are run on the same machine.
|
||||
|
||||
`--rmiport` *port*
|
||||
: Sets the port number to which the RMI connector is bound. If not specified
|
||||
a random available port is used.
|
||||
|
||||
`--registryport` *port*
|
||||
: Sets the RMI registry port. This option overrides the system property
|
||||
'sun.jvm.hotspot.rmi.port'. If not specified, the system property is used.
|
||||
If the system property is not set, the default port 1099 is used.
|
||||
|
||||
`--hostname` *hostname*
|
||||
: Sets the hostname the RMI connector is bound. The value could be a hostname
|
||||
or an IPv4/IPv6 address. This option overrides the system property
|
||||
'java.rmi.server.hostname'. If not specified, the system property is used.
|
||||
If the system property is not set, a system hostname is used.
|
||||
|
||||
## Options for the jinfo Mode
|
||||
|
||||
`--flags`
|
||||
: Prints the VM flags.
|
||||
|
||||
`--sysprops`
|
||||
: Prints the Java system properties.
|
||||
|
||||
no option
|
||||
: Prints the VM flags and the Java system properties.
|
||||
|
||||
## Options for the jmap Mode
|
||||
|
||||
no option
|
||||
: Prints the same information as Solaris `pmap`.
|
||||
|
||||
`--heap`
|
||||
: Prints the `java` heap summary.
|
||||
|
||||
`--binaryheap`
|
||||
: Dumps the `java` heap in `hprof` binary format.
|
||||
|
||||
`--dumpfile` *name*
|
||||
: The name of the dumpfile.
|
||||
|
||||
`--histo`
|
||||
: Prints the histogram of `java` object heap.
|
||||
|
||||
`--clstats`
|
||||
: Prints the class loader statistics.
|
||||
|
||||
`--finalizerinfo`
|
||||
: Prints the information on objects awaiting finalization.
|
||||
|
||||
## Options for the jstack Mode
|
||||
|
||||
`--locks`
|
||||
: Prints the `java.util.concurrent` locks information.
|
||||
|
||||
`--mixed`
|
||||
: Attempts to print both `java` and native frames if the platform allows it.
|
||||
|
||||
## Options for the jsnap Mode
|
||||
|
||||
`--all`
|
||||
: Prints all performance counters.
|
@ -1,193 +0,0 @@
|
||||
.\" Copyright (c) 2021, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JWEBSERVER" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jwebserver - launch the Java Simple Web Server
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jwebserver\f[R] [\f[I]options\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
Command-line options.
|
||||
For a detailed description of the options, see \f[B]Options\f[R].
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jwebserver\f[R] tool provides a minimal HTTP server, designed
|
||||
to be used for prototyping, testing, and debugging.
|
||||
It serves a single directory hierarchy, and only serves static files.
|
||||
Only HTTP/1.1 is supported; HTTP/2 and HTTPS are not supported.
|
||||
.PP
|
||||
Only idempotent HEAD and GET requests are served.
|
||||
Any other requests receive a \f[V]501 - Not Implemented\f[R] or a
|
||||
\f[V]405 - Not Allowed\f[R] response.
|
||||
GET requests are mapped to the directory being served, as follows:
|
||||
.IP \[bu] 2
|
||||
If the requested resource is a file, its content is served.
|
||||
.IP \[bu] 2
|
||||
If the requested resource is a directory that contains an index file,
|
||||
the content of the index file is served.
|
||||
.IP \[bu] 2
|
||||
Otherwise, the names of all files and subdirectories of the directory
|
||||
are listed.
|
||||
Symbolic links and hidden files are not listed or served.
|
||||
.PP
|
||||
MIME types are configured automatically, using the built-in table.
|
||||
For example, \f[V].html\f[R] files are served as \f[V]text/html\f[R] and
|
||||
\f[V].java\f[R] files are served as \f[V]text/plain\f[R].
|
||||
.PP
|
||||
\f[V]jwebserver\f[R] is located in the jdk.httpserver module, and can
|
||||
alternatively be started with \f[V]java -m jdk.httpserver\f[R].
|
||||
It is based on the web server implementation in the
|
||||
\f[V]com.sun.net.httpserver\f[R] package.
|
||||
The \f[V]com.sun.net.httpserver.SimpleFileServer\f[R] class provides a
|
||||
programmatic way to retrieve the server and its components for reuse and
|
||||
extension.
|
||||
.SH USAGE
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jwebserver [-b bind address] [-p port] [-d directory]
|
||||
[-o none|info|verbose] [-h to show options]
|
||||
[-version to show version information]
|
||||
\f[R]
|
||||
.fi
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\f[V]-h\f[R] or \f[V]-?\f[R] or \f[V]--help\f[R]
|
||||
Prints the help message and exits.
|
||||
.TP
|
||||
\f[V]-b\f[R] \f[I]addr\f[R] or \f[V]--bind-address\f[R] \f[I]addr\f[R]
|
||||
Specifies the address to bind to.
|
||||
Default: 127.0.0.1 or ::1 (loopback).
|
||||
For all interfaces use \f[V]-b 0.0.0.0\f[R] or \f[V]-b ::\f[R].
|
||||
.TP
|
||||
\f[V]-d\f[R] \f[I]dir\f[R] or \f[V]--directory\f[R] \f[I]dir\f[R]
|
||||
Specifies the directory to serve.
|
||||
Default: current directory.
|
||||
.TP
|
||||
\f[V]-o\f[R] \f[I]level\f[R] or \f[V]--output\f[R] \f[I]level\f[R]
|
||||
Specifies the output format.
|
||||
\f[V]none\f[R] | \f[V]info\f[R] | \f[V]verbose\f[R].
|
||||
Default: \f[V]info\f[R].
|
||||
.TP
|
||||
\f[V]-p\f[R] \f[I]port\f[R] or \f[V]--port\f[R] \f[I]port\f[R]
|
||||
Specifies the port to listen on.
|
||||
Default: 8000.
|
||||
.TP
|
||||
\f[V]-version\f[R] or \f[V]--version\f[R]
|
||||
Prints the version information and exits.
|
||||
.PP
|
||||
To stop the server, press \f[V]Ctrl + C\f[R].
|
||||
.SH STARTING THE SERVER
|
||||
.PP
|
||||
The following command starts the Simple Web Server:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jwebserver
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
If startup is successful, the server prints a message to
|
||||
\f[V]System.out\f[R] listing the local address and the absolute path of
|
||||
the directory being served.
|
||||
For example:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jwebserver
|
||||
Binding to loopback by default. For all interfaces use \[dq]-b 0.0.0.0\[dq] or \[dq]-b ::\[dq].
|
||||
Serving /cwd and subdirectories on 127.0.0.1 port 8000
|
||||
URL http://127.0.0.1:8000/
|
||||
\f[R]
|
||||
.fi
|
||||
.SH CONFIGURATION
|
||||
.PP
|
||||
By default, the server runs in the foreground and binds to the loopback
|
||||
address and port 8000.
|
||||
This can be changed with the \f[V]-b\f[R] and \f[V]-p\f[R] options.
|
||||
For example, to bind the Simple Web Server to all interfaces, use:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jwebserver -b 0.0.0.0
|
||||
Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000
|
||||
URL http://123.456.7.891:8000/
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Note that this makes the web server accessible to all hosts on the
|
||||
network.
|
||||
\f[I]Do not do this unless you are sure the server cannot leak any
|
||||
sensitive information.\f[R]
|
||||
.PP
|
||||
As another example, use the following command to run on port 9000:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jwebserver -p 9000
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
By default, the files of the current directory are served.
|
||||
A different directory can be specified with the \f[V]-d\f[R] option.
|
||||
.PP
|
||||
By default, every request is logged on the console.
|
||||
The output looks like this:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
127.0.0.1 - - [10/Feb/2021:14:34:11 +0000] \[dq]GET /some/subdirectory/ HTTP/1.1\[dq] 200 -
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Logging output can be changed with the \f[V]-o\f[R] option.
|
||||
The default setting is \f[V]info\f[R].
|
||||
The \f[V]verbose\f[R] setting additionally includes the request and
|
||||
response headers as well as the absolute path of the requested resource.
|
||||
.SH STOPPING THE SERVER
|
||||
.PP
|
||||
Once started successfully, the server runs until it is stopped.
|
||||
On Unix platforms, the server can be stopped by sending it a
|
||||
\f[V]SIGINT\f[R] signal (\f[V]Ctrl+C\f[R] in a terminal window).
|
||||
.SH HELP OPTION
|
||||
.PP
|
||||
The \f[V]-h\f[R] option displays a help message describing the usage and
|
||||
the options of the \f[V]jwebserver\f[R].
|
152
src/jdk.httpserver/share/man/jwebserver.md
Normal file
152
src/jdk.httpserver/share/man/jwebserver.md
Normal file
@ -0,0 +1,152 @@
|
||||
---
|
||||
# Copyright (c) 2021, 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.
|
||||
#
|
||||
|
||||
title: 'JWEBSERVER(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jwebserver - launch the Java Simple Web Server
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jwebserver` \[*options*\]
|
||||
|
||||
*options*
|
||||
: Command-line options. For a detailed description of the options, see [Options].
|
||||
|
||||
## Description
|
||||
The `jwebserver` tool provides a minimal HTTP server, designed to be used
|
||||
for prototyping, testing, and debugging. It serves a single directory hierarchy,
|
||||
and only serves static files. Only HTTP/1.1 is supported;
|
||||
HTTP/2 and HTTPS are not supported.
|
||||
|
||||
Only idempotent HEAD and GET requests are served. Any other requests receive
|
||||
a `501 - Not Implemented` or a `405 - Not Allowed` response. GET requests are
|
||||
mapped to the directory being served, as follows:
|
||||
|
||||
* If the requested resource is a file, its content is served.
|
||||
* If the requested resource is a directory that contains an index file,
|
||||
the content of the index file is served.
|
||||
* Otherwise, the names of all files and subdirectories of the directory are
|
||||
listed. Symbolic links and hidden files are not listed or served.
|
||||
|
||||
MIME types are configured automatically, using the built-in table. For example,
|
||||
`.html` files are served as `text/html` and `.java` files are served as
|
||||
`text/plain`.
|
||||
|
||||
`jwebserver` is located in the jdk.httpserver module, and can alternatively
|
||||
be started with `java -m jdk.httpserver`. It is based on the web server
|
||||
implementation in the `com.sun.net.httpserver` package.
|
||||
The `com.sun.net.httpserver.SimpleFileServer` class provides a programmatic
|
||||
way to retrieve the server and its components for reuse and extension.
|
||||
|
||||
## Usage
|
||||
```
|
||||
jwebserver [-b bind address] [-p port] [-d directory]
|
||||
[-o none|info|verbose] [-h to show options]
|
||||
[-version to show version information]
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
`-h` or `-?` or `--help`
|
||||
: Prints the help message and exits.
|
||||
|
||||
`-b` *addr* or `--bind-address` *addr*
|
||||
: Specifies the address to bind to.
|
||||
Default: 127.0.0.1 or ::1 (loopback).
|
||||
For all interfaces use `-b 0.0.0.0` or `-b ::`.
|
||||
|
||||
`-d` *dir* or `--directory` *dir*
|
||||
: Specifies the directory to serve.
|
||||
Default: current directory.
|
||||
|
||||
`-o` *level* or `--output` *level*
|
||||
: Specifies the output format. `none` | `info` | `verbose`.
|
||||
Default: `info`.
|
||||
|
||||
`-p` *port* or `--port` *port*
|
||||
: Specifies the port to listen on.
|
||||
Default: 8000.
|
||||
|
||||
`-version` or `--version`
|
||||
: Prints the version information and exits.
|
||||
|
||||
To stop the server, press `Ctrl + C`.
|
||||
|
||||
## Starting the Server
|
||||
The following command starts the Simple Web Server:
|
||||
```
|
||||
$ jwebserver
|
||||
```
|
||||
If startup is successful, the server prints a message to `System.out`
|
||||
listing the local address and the absolute path of the directory being
|
||||
served. For example:
|
||||
```
|
||||
$ jwebserver
|
||||
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
|
||||
Serving /cwd and subdirectories on 127.0.0.1 port 8000
|
||||
URL http://127.0.0.1:8000/
|
||||
```
|
||||
|
||||
## Configuration
|
||||
By default, the server runs in the foreground and binds to the loopback
|
||||
address and port 8000. This can be changed with the `-b` and `-p` options.
|
||||
For example, to bind the Simple Web Server to all interfaces, use:
|
||||
```
|
||||
$ jwebserver -b 0.0.0.0
|
||||
Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000
|
||||
URL http://123.456.7.891:8000/
|
||||
```
|
||||
Note that this makes the web server accessible to all hosts on the network.
|
||||
*Do not do this unless you are sure the server cannot leak any sensitive
|
||||
information.*
|
||||
|
||||
As another example, use the following command to run on port 9000:
|
||||
```
|
||||
$ jwebserver -p 9000
|
||||
```
|
||||
|
||||
By default, the files of the current directory are served. A different
|
||||
directory can be specified with the `-d` option.
|
||||
|
||||
By default, every request is logged on the console. The output looks like
|
||||
this:
|
||||
```
|
||||
127.0.0.1 - - [10/Feb/2021:14:34:11 +0000] "GET /some/subdirectory/ HTTP/1.1" 200 -
|
||||
```
|
||||
Logging output can be changed with the `-o` option. The default setting is
|
||||
`info`. The `verbose` setting additionally includes the request and response
|
||||
headers as well as the absolute path of the requested resource.
|
||||
|
||||
## Stopping the Server
|
||||
Once started successfully, the server runs until it is stopped. On Unix
|
||||
platforms, the server can be stopped by sending it a `SIGINT` signal
|
||||
(`Ctrl+C` in a terminal window).
|
||||
|
||||
## Help Option
|
||||
The `-h` option displays a help message describing the usage and the options
|
||||
of the `jwebserver`.
|
@ -1,379 +0,0 @@
|
||||
.\" Copyright (c) 1997, 2024, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JAR" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jar - create an archive for classes and resources, and manipulate or
|
||||
restore individual classes or resources from an archive
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jar\f[R] [\f[I]OPTION\f[R] ...]
|
||||
[ [\f[V]--release\f[R] \f[I]VERSION\f[R]] [\f[V]-C\f[R] \f[I]dir\f[R]]
|
||||
\f[I]files\f[R]] ...
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jar\f[R] command is a general-purpose archiving and compression
|
||||
tool, based on the ZIP and ZLIB compression formats.
|
||||
Initially, the \f[V]jar\f[R] command was designed to package Java
|
||||
applets (not supported since JDK 11) or applications; however, beginning
|
||||
with JDK 9, users can use the \f[V]jar\f[R] command to create modular
|
||||
JARs.
|
||||
For transportation and deployment, it\[aq]s usually more convenient to
|
||||
package modules as modular JARs.
|
||||
.PP
|
||||
The syntax for the \f[V]jar\f[R] command resembles the syntax for the
|
||||
\f[V]tar\f[R] command.
|
||||
It has several main operation modes, defined by one of the mandatory
|
||||
operation arguments.
|
||||
Other arguments are either options that modify the behavior of the
|
||||
operation or are required to perform the operation.
|
||||
.PP
|
||||
When modules or the components of an application (files, images and
|
||||
sounds) are combined into a single archive, they can be downloaded by a
|
||||
Java agent (such as a browser) in a single HTTP transaction, rather than
|
||||
requiring a new connection for each piece.
|
||||
This dramatically improves download times.
|
||||
The \f[V]jar\f[R] command also compresses files, which further improves
|
||||
download time.
|
||||
The \f[V]jar\f[R] command also enables individual entries in a file to
|
||||
be signed so that their origin can be authenticated.
|
||||
A JAR file can be used as a class path entry, whether or not it\[aq]s
|
||||
compressed.
|
||||
.PP
|
||||
An archive becomes a modular JAR when you include a module descriptor,
|
||||
\f[V]module-info.class\f[R], in the root of the given directories or in
|
||||
the root of the \f[V].jar\f[R] archive.
|
||||
The following operations described in \f[B]Operation Modifiers Valid
|
||||
Only in Create and Update Modes\f[R] are valid only when creating or
|
||||
updating a modular jar or updating an existing non-modular jar:
|
||||
.IP \[bu] 2
|
||||
\f[V]--module-version\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]--hash-modules\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]--module-path\f[R]
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
All mandatory or optional arguments for long options are also mandatory
|
||||
or optional for any corresponding short options.
|
||||
.SH MAIN OPERATION MODES
|
||||
.PP
|
||||
When using the \f[V]jar\f[R] command, you must specify the operation for
|
||||
it to perform.
|
||||
You specify the operation mode for the \f[V]jar\f[R] command by
|
||||
including the appropriate operation arguments described in this section.
|
||||
You can mix an operation argument with other one-letter options.
|
||||
Generally the operation argument is the first argument specified on the
|
||||
command line.
|
||||
.TP
|
||||
\f[V]-c\f[R] or \f[V]--create\f[R]
|
||||
Creates the archive.
|
||||
.TP
|
||||
\f[V]-i\f[R] \f[I]FILE\f[R] or \f[V]--generate-index=\f[R]\f[I]FILE\f[R]
|
||||
Generates index information for the specified JAR file.
|
||||
This option is deprecated and may be removed in a future release.
|
||||
.TP
|
||||
\f[V]-t\f[R] or \f[V]--list\f[R]
|
||||
Lists the table of contents for the archive.
|
||||
.TP
|
||||
\f[V]-u\f[R] or \f[V]--update\f[R]
|
||||
Updates an existing JAR file.
|
||||
.TP
|
||||
\f[V]-x\f[R] or \f[V]--extract\f[R]
|
||||
Extracts the named (or all) files from the archive.
|
||||
If a file with the same name appears more than once in the archive, each
|
||||
copy will be extracted, with later copies overwriting (replacing)
|
||||
earlier copies unless -k is specified.
|
||||
.TP
|
||||
\f[V]-d\f[R] or \f[V]--describe-module\f[R]
|
||||
Prints the module descriptor or automatic module name.
|
||||
.SH OPERATION MODIFIERS VALID IN ANY MODE
|
||||
.PP
|
||||
You can use the following options to customize the actions of any
|
||||
operation mode included in the \f[V]jar\f[R] command.
|
||||
.TP
|
||||
\f[V]-C\f[R] \f[I]DIR\f[R]
|
||||
When used with the create operation mode, changes the specified
|
||||
directory and includes the \f[I]files\f[R] specified at the end of the
|
||||
command line.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar\f[R] [\f[I]OPTION\f[R] ...]
|
||||
[ [\f[V]--release\f[R] \f[I]VERSION\f[R]] [\f[V]-C\f[R] \f[I]dir\f[R]]
|
||||
\f[I]files\f[R]]
|
||||
.PP
|
||||
When used with the extract operation mode, specifies the destination
|
||||
directory where the JAR file will be extracted.
|
||||
Unlike with the create operation mode, this option can be specified only
|
||||
once with the extract operation mode.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-f\f[R] \f[I]FILE\f[R] or \f[V]--file=\f[R]\f[I]FILE\f[R]
|
||||
Specifies the archive file name.
|
||||
.TP
|
||||
\f[V]--release\f[R] \f[I]VERSION\f[R]
|
||||
Creates a multirelease JAR file.
|
||||
Places all files specified after the option into a versioned directory
|
||||
of the JAR file named
|
||||
\f[V]META-INF/versions/\f[R]\f[I]VERSION\f[R]\f[V]/\f[R], where
|
||||
\f[I]VERSION\f[R] must be must be a positive integer whose value is 9 or
|
||||
greater.
|
||||
.RS
|
||||
.PP
|
||||
At run time, where more than one version of a class exists in the JAR,
|
||||
the JDK will use the first one it finds, searching initially in the
|
||||
directory tree whose \f[I]VERSION\f[R] number matches the JDK\[aq]s
|
||||
major version number.
|
||||
It will then look in directories with successively lower
|
||||
\f[I]VERSION\f[R] numbers, and finally look in the root of the JAR.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-v\f[R] or \f[V]--verbose\f[R]
|
||||
Sends or prints verbose output to standard output.
|
||||
.SH OPERATION MODIFIERS VALID ONLY IN CREATE AND UPDATE MODES
|
||||
.PP
|
||||
You can use the following options to customize the actions of the create
|
||||
and the update main operation modes:
|
||||
.TP
|
||||
\f[V]-e\f[R] \f[I]CLASSNAME\f[R] or \f[V]--main-class=\f[R]\f[I]CLASSNAME\f[R]
|
||||
Specifies the application entry point for standalone applications
|
||||
bundled into a modular or executable modular JAR file.
|
||||
.TP
|
||||
\f[V]-m\f[R] \f[I]FILE\f[R] or \f[V]--manifest=\f[R]\f[I]FILE\f[R]
|
||||
Includes the manifest information from the given manifest file.
|
||||
.TP
|
||||
\f[V]-M\f[R] or \f[V]--no-manifest\f[R]
|
||||
Doesn\[aq]t create a manifest file for the entries.
|
||||
.TP
|
||||
\f[V]--module-version=\f[R]\f[I]VERSION\f[R]
|
||||
Specifies the module version, when creating or updating a modular JAR
|
||||
file, or updating a non-modular JAR file.
|
||||
.TP
|
||||
\f[V]--hash-modules=\f[R]\f[I]PATTERN\f[R]
|
||||
Computes and records the hashes of modules matched by the given pattern
|
||||
and that depend upon directly or indirectly on a modular JAR file being
|
||||
created or a non-modular JAR file being updated.
|
||||
.TP
|
||||
\f[V]-p\f[R] or \f[V]--module-path\f[R]
|
||||
Specifies the location of module dependence for generating the hash.
|
||||
.TP
|
||||
\f[V]\[at]\f[R]\f[I]file\f[R]
|
||||
Reads \f[V]jar\f[R] options and file names from a text file as if they
|
||||
were supplied on the command line
|
||||
.SH OPERATION MODIFIERS VALID ONLY IN CREATE, UPDATE, AND GENERATE-INDEX MODES
|
||||
.PP
|
||||
You can use the following options to customize the actions of the create
|
||||
(\f[V]-c\f[R] or \f[V]--create\f[R]) the update (\f[V]-u\f[R] or
|
||||
\f[V]--update\f[R] ) and the generate-index (\f[V]-i\f[R] or
|
||||
\f[V]--generate-index=\f[R]\f[I]FILE\f[R]) main operation modes:
|
||||
.TP
|
||||
\f[V]-0\f[R] or \f[V]--no-compress\f[R]
|
||||
Stores without using ZIP compression.
|
||||
.TP
|
||||
\f[V]--date=\f[R]\f[I]TIMESTAMP\f[R]
|
||||
The timestamp in ISO-8601 extended offset date-time with optional
|
||||
time-zone format, to use for the timestamp of the entries, e.g.
|
||||
\[dq]2022-02-12T12:30:00-05:00\[dq].
|
||||
.SH OPERATION MODIFIERS VALID ONLY IN EXTRACT MODE
|
||||
.TP
|
||||
\f[V]--dir\f[R] \f[I]DIR\f[R]
|
||||
Directory into which the JAR file will be extracted.
|
||||
.TP
|
||||
\f[V]-k\f[R] or \f[V]--keep-old-files\f[R]
|
||||
Do not overwrite existing files.
|
||||
If a Jar file entry with the same name exists in the target directory,
|
||||
the existing file will not be overwritten.
|
||||
As a result, if a file appears more than once in an archive, later
|
||||
copies will not overwrite earlier copies.
|
||||
Also note that some file system can be case insensitive.
|
||||
.SH OTHER OPTIONS
|
||||
.PP
|
||||
The following options are recognized by the \f[V]jar\f[R] command and
|
||||
not used with operation modes:
|
||||
.TP
|
||||
\f[V]-h\f[R] or \f[V]--help\f[R][\f[V]:compat\f[R]]
|
||||
Displays the command-line help for the \f[V]jar\f[R] command or
|
||||
optionally the compatibility help.
|
||||
.TP
|
||||
\f[V]--help-extra\f[R]
|
||||
Displays help on extra options.
|
||||
.TP
|
||||
\f[V]--version\f[R]
|
||||
Prints the program version.
|
||||
.SH EXAMPLES OF JAR COMMAND SYNTAX
|
||||
.IP \[bu] 2
|
||||
Create an archive, \f[V]classes.jar\f[R], that contains two class files,
|
||||
\f[V]Foo.class\f[R] and \f[V]Bar.class\f[R].
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --create --file classes.jar Foo.class Bar.class\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Create an archive, \f[V]classes.jar\f[R], that contains two class files,
|
||||
\f[V]Foo.class\f[R] and \f[V]Bar.class\f[R] setting the last modified
|
||||
date and time to \f[V]2021 Jan 6 12:36:00\f[R].
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --create --date=\[dq]2021-01-06T14:36:00+02:00\[dq] --file=classes.jar Foo.class Bar.class\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Create an archive, \f[V]classes.jar\f[R], by using an existing manifest,
|
||||
\f[V]mymanifest\f[R], that contains all of the files in the directory
|
||||
\f[V]foo/\f[R].
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --create --file classes.jar --manifest mymanifest -C foo/\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Create a modular JAR archive,\f[V]foo.jar\f[R], where the module
|
||||
descriptor is located in \f[V]classes/module-info.class\f[R].
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0 -C foo/classes resources\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Update an existing non-modular JAR, \f[V]foo.jar\f[R], to a modular JAR
|
||||
file.
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0 -C foo/module-info.class\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Create a versioned or multi-release JAR, \f[V]foo.jar\f[R], that places
|
||||
the files in the \f[V]classes\f[R] directory at the root of the JAR, and
|
||||
the files in the \f[V]classes-10\f[R] directory in the
|
||||
\f[V]META-INF/versions/10\f[R] directory of the JAR.
|
||||
.RS 2
|
||||
.PP
|
||||
In this example, the \f[V]classes/com/foo\f[R] directory contains two
|
||||
classes, \f[V]com.foo.Hello\f[R] (the entry point class) and
|
||||
\f[V]com.foo.NameProvider\f[R], both compiled for JDK 8.
|
||||
The \f[V]classes-10/com/foo\f[R] directory contains a different version
|
||||
of the \f[V]com.foo.NameProvider\f[R] class, this one containing JDK 10
|
||||
specific code and compiled for JDK 10.
|
||||
.PP
|
||||
Given this setup, create a multirelease JAR file \f[V]foo.jar\f[R] by
|
||||
running the following command from the directory containing the
|
||||
directories \f[V]classes\f[R] and \f[V]classes-10\f[R] .
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --create --file foo.jar --main-class com.foo.Hello -C classes . --release 10 -C classes-10 .\f[R]
|
||||
.RE
|
||||
.PP
|
||||
The JAR file \f[V]foo.jar\f[R] now contains:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
% jar -tf foo.jar
|
||||
|
||||
META-INF/
|
||||
META-INF/MANIFEST.MF
|
||||
com/
|
||||
com/foo/
|
||||
com/foo/Hello.class
|
||||
com/foo/NameProvider.class
|
||||
META-INF/versions/10/com/
|
||||
META-INF/versions/10/com/foo/
|
||||
META-INF/versions/10/com/foo/NameProvider.class
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
As well as other information, the file \f[V]META-INF/MANIFEST.MF\f[R],
|
||||
will contain the following lines to indicate that this is a multirelease
|
||||
JAR file with an entry point of \f[V]com.foo.Hello\f[R].
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
\&...
|
||||
Main-Class: com.foo.Hello
|
||||
Multi-Release: true
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Assuming that the \f[V]com.foo.Hello\f[R] class calls a method on the
|
||||
\f[V]com.foo.NameProvider\f[R] class, running the program using JDK 10
|
||||
will ensure that the \f[V]com.foo.NameProvider\f[R] class is the one in
|
||||
\f[V]META-INF/versions/10/com/foo/\f[R].
|
||||
Running the program using JDK 8 will ensure that the
|
||||
\f[V]com.foo.NameProvider\f[R] class is the one at the root of the JAR,
|
||||
in \f[V]com/foo\f[R].
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Create an archive, \f[V]my.jar\f[R], by reading options and lists of
|
||||
class files from the file \f[V]classes.list\f[R].
|
||||
.RS 2
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
To shorten or simplify the \f[V]jar\f[R] command, you can provide an arg
|
||||
file that lists the files to include in the JAR file and pass it to the
|
||||
\f[V]jar\f[R] command with the at sign (\f[V]\[at]\f[R]) as a prefix.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --create --file my.jar \[at]classes.list\f[R]
|
||||
.RE
|
||||
.PP
|
||||
If one or more entries in the arg file cannot be found then the jar
|
||||
command fails without creating the JAR file.
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Extract the JAR file \f[V]foo.jar\f[R] to \f[V]/tmp/bar/\f[R] directory:
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar -xf foo.jar -C /tmp/bar/\f[R]
|
||||
.RE
|
||||
.PP
|
||||
Alternatively, you can also do:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar --extract --file foo.jar --dir /tmp/bar/\f[R]
|
||||
.RE
|
||||
.RE
|
313
src/jdk.jartool/share/man/jar.md
Normal file
313
src/jdk.jartool/share/man/jar.md
Normal file
@ -0,0 +1,313 @@
|
||||
---
|
||||
# Copyright (c) 1997, 2024, 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.
|
||||
#
|
||||
|
||||
title: 'JAR(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jar - create an archive for classes and resources, and manipulate or restore
|
||||
individual classes or resources from an archive
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jar` \[*OPTION* ...\] \[ \[`--release` *VERSION*\] \[`-C` *dir*\] *files*\]
|
||||
...
|
||||
|
||||
## Description
|
||||
|
||||
The `jar` command is a general-purpose archiving and compression tool, based on
|
||||
the ZIP and ZLIB compression formats. Initially, the `jar` command was designed
|
||||
to package Java applets (not supported since JDK 11) or applications; however,
|
||||
beginning with JDK 9, users can use the `jar` command to create modular JARs.
|
||||
For transportation and deployment, it's usually more convenient to package
|
||||
modules as modular JARs.
|
||||
|
||||
The syntax for the `jar` command resembles the syntax for the `tar` command. It
|
||||
has several main operation modes, defined by one of the mandatory operation
|
||||
arguments. Other arguments are either options that modify the behavior of the
|
||||
operation or are required to perform the operation.
|
||||
|
||||
When modules or the components of an application (files, images and sounds) are
|
||||
combined into a single archive, they can be downloaded by a Java agent (such as
|
||||
a browser) in a single HTTP transaction, rather than requiring a new connection
|
||||
for each piece. This dramatically improves download times. The `jar` command
|
||||
also compresses files, which further improves download time. The `jar` command
|
||||
also enables individual entries in a file to be signed so that their origin can
|
||||
be authenticated. A JAR file can be used as a class path entry, whether or not
|
||||
it's compressed.
|
||||
|
||||
An archive becomes a modular JAR when you include a module descriptor,
|
||||
`module-info.class`, in the root of the given directories or in the root of
|
||||
the `.jar` archive. The following operations described in [Operation Modifiers
|
||||
Valid Only in Create and Update Modes] are valid only when creating or
|
||||
updating a modular jar or updating an existing non-modular jar:
|
||||
|
||||
- `--module-version`
|
||||
|
||||
- `--hash-modules`
|
||||
|
||||
- `--module-path`
|
||||
|
||||
**Note:**
|
||||
|
||||
All mandatory or optional arguments for long options are also mandatory or
|
||||
optional for any corresponding short options.
|
||||
|
||||
## Main Operation Modes
|
||||
|
||||
When using the `jar` command, you must specify the operation for it to perform.
|
||||
You specify the operation mode for the `jar` command by including the
|
||||
appropriate operation arguments described in this section. You can mix an
|
||||
operation argument with other one-letter options. Generally the operation
|
||||
argument is the first argument specified on the command line.
|
||||
|
||||
`-c` or `--create`
|
||||
: Creates the archive.
|
||||
|
||||
`-i` *FILE* or `--generate-index=`*FILE*
|
||||
: Generates index information for the specified JAR file. This option is deprecated
|
||||
and may be removed in a future release.
|
||||
|
||||
`-t` or `--list`
|
||||
: Lists the table of contents for the archive.
|
||||
|
||||
`-u` or `--update`
|
||||
: Updates an existing JAR file.
|
||||
|
||||
`-x` or `--extract`
|
||||
: Extracts the named (or all) files from the archive.
|
||||
If a file with the same name appears more than once in
|
||||
the archive, each copy will be extracted, with later copies
|
||||
overwriting (replacing) earlier copies unless -k is specified.
|
||||
|
||||
`-d` or `--describe-module`
|
||||
: Prints the module descriptor or automatic module name.
|
||||
|
||||
## Operation Modifiers Valid in Any Mode
|
||||
|
||||
You can use the following options to customize the actions of any operation
|
||||
mode included in the `jar` command.
|
||||
|
||||
`-C` *DIR*
|
||||
: When used with the create operation mode, changes the specified directory
|
||||
and includes the *files* specified at the end of the command line.
|
||||
|
||||
`jar` \[*OPTION* ...\] \[ \[`--release` *VERSION*\] \[`-C` *dir*\]
|
||||
*files*\]
|
||||
|
||||
When used with the extract operation mode, specifies the destination directory
|
||||
where the JAR file will be extracted. Unlike with the create operation mode,
|
||||
this option can be specified only once with the extract operation mode.
|
||||
|
||||
`-f` *FILE* or `--file=`*FILE*
|
||||
: Specifies the archive file name.
|
||||
|
||||
`--release` *VERSION*
|
||||
: Creates a multirelease JAR file. Places all files specified after the
|
||||
option into a versioned directory of the JAR file named
|
||||
`META-INF/versions/`*VERSION*`/`, where *VERSION* must be must be a
|
||||
positive integer whose value is 9 or greater.
|
||||
|
||||
At run time, where more than one version of a class exists in the JAR, the
|
||||
JDK will use the first one it finds, searching initially in the directory
|
||||
tree whose *VERSION* number matches the JDK's major version number. It will
|
||||
then look in directories with successively lower *VERSION* numbers, and
|
||||
finally look in the root of the JAR.
|
||||
|
||||
`-v` or `--verbose`
|
||||
: Sends or prints verbose output to standard output.
|
||||
|
||||
## Operation Modifiers Valid Only in Create and Update Modes
|
||||
|
||||
You can use the following options to customize the actions of the create and
|
||||
the update main operation modes:
|
||||
|
||||
`-e` *CLASSNAME* or `--main-class=`*CLASSNAME*
|
||||
: Specifies the application entry point for standalone applications bundled
|
||||
into a modular or executable modular JAR file.
|
||||
|
||||
`-m` *FILE* or `--manifest=`*FILE*
|
||||
: Includes the manifest information from the given manifest file.
|
||||
|
||||
`-M` or `--no-manifest`
|
||||
: Doesn't create a manifest file for the entries.
|
||||
|
||||
`--module-version=`*VERSION*
|
||||
: Specifies the module version, when creating or updating a modular JAR file,
|
||||
or updating a non-modular JAR file.
|
||||
|
||||
`--hash-modules=`*PATTERN*
|
||||
: Computes and records the hashes of modules matched by the given pattern and
|
||||
that depend upon directly or indirectly on a modular JAR file being created
|
||||
or a non-modular JAR file being updated.
|
||||
|
||||
`-p` or `--module-path`
|
||||
: Specifies the location of module dependence for generating the hash.
|
||||
|
||||
`@`*file*
|
||||
: Reads `jar` options and file names from a text file as if they were supplied
|
||||
on the command line
|
||||
|
||||
## Operation Modifiers Valid Only in Create, Update, and Generate-index Modes
|
||||
|
||||
You can use the following options to customize the actions of the create (`-c`
|
||||
or `--create`) the update (`-u` or `--update` ) and the generate-index (`-i` or
|
||||
`--generate-index=`*FILE*) main operation modes:
|
||||
|
||||
`-0` or `--no-compress`
|
||||
: Stores without using ZIP compression.
|
||||
|
||||
`--date=`*TIMESTAMP*
|
||||
: The timestamp in ISO-8601 extended offset date-time with optional time-zone
|
||||
format, to use for the timestamp of the entries,
|
||||
e.g. "2022-02-12T12:30:00-05:00".
|
||||
|
||||
## Operation Modifiers Valid Only in Extract Mode
|
||||
|
||||
`--dir` *DIR*
|
||||
: Directory into which the JAR file will be extracted.
|
||||
|
||||
`-k` or `--keep-old-files`
|
||||
: Do not overwrite existing files.
|
||||
If a Jar file entry with the same name exists in the target directory, the
|
||||
existing file will not be overwritten.
|
||||
As a result, if a file appears more than once in an archive, later copies will not overwrite
|
||||
earlier copies.
|
||||
Also note that some file system can be case insensitive.
|
||||
|
||||
## Other Options
|
||||
|
||||
The following options are recognized by the `jar` command and not used with
|
||||
operation modes:
|
||||
|
||||
`-h` or `--help`\[`:compat`\]
|
||||
: Displays the command-line help for the `jar` command or optionally the
|
||||
compatibility help.
|
||||
|
||||
`--help-extra`
|
||||
: Displays help on extra options.
|
||||
|
||||
`--version`
|
||||
: Prints the program version.
|
||||
|
||||
## Examples of jar Command Syntax
|
||||
|
||||
- Create an archive, `classes.jar`, that contains two class files,
|
||||
`Foo.class` and `Bar.class`.
|
||||
|
||||
> `jar --create --file classes.jar Foo.class Bar.class`
|
||||
|
||||
- Create an archive, `classes.jar`, that contains two class files,
|
||||
`Foo.class` and `Bar.class` setting the last modified date and time to `2021 Jan 6 12:36:00`.
|
||||
|
||||
> `jar --create --date="2021-01-06T14:36:00+02:00" --file=classes.jar Foo.class Bar.class`
|
||||
|
||||
- Create an archive, `classes.jar`, by using an existing manifest,
|
||||
`mymanifest`, that contains all of the files in the directory `foo/`.
|
||||
|
||||
> `jar --create --file classes.jar --manifest mymanifest -C foo/`
|
||||
|
||||
- Create a modular JAR archive,`foo.jar`, where the module descriptor is
|
||||
located in `classes/module-info.class`.
|
||||
|
||||
> `jar --create --file foo.jar --main-class com.foo.Main
|
||||
--module-version 1.0 -C foo/classes resources`
|
||||
|
||||
- Update an existing non-modular JAR, `foo.jar`, to a modular JAR file.
|
||||
|
||||
> `jar --update --file foo.jar --main-class com.foo.Main
|
||||
--module-version 1.0 -C foo/module-info.class`
|
||||
|
||||
- Create a versioned or multi-release JAR, `foo.jar`, that places the files
|
||||
in the `classes` directory at the root of the JAR, and the files in the
|
||||
`classes-10` directory in the `META-INF/versions/10` directory of the JAR.
|
||||
|
||||
In this example, the `classes/com/foo` directory contains two classes,
|
||||
`com.foo.Hello` (the entry point class) and `com.foo.NameProvider`, both
|
||||
compiled for JDK 8. The `classes-10/com/foo` directory contains a different
|
||||
version of the `com.foo.NameProvider` class, this one containing JDK 10
|
||||
specific code and compiled for JDK 10.
|
||||
|
||||
Given this setup, create a multirelease JAR file `foo.jar` by running the
|
||||
following command from the directory containing the directories `classes`
|
||||
and `classes-10` .
|
||||
|
||||
> `jar --create --file foo.jar --main-class com.foo.Hello -C classes .
|
||||
--release 10 -C classes-10 .`
|
||||
|
||||
The JAR file `foo.jar` now contains:
|
||||
|
||||
```
|
||||
% jar -tf foo.jar
|
||||
|
||||
META-INF/
|
||||
META-INF/MANIFEST.MF
|
||||
com/
|
||||
com/foo/
|
||||
com/foo/Hello.class
|
||||
com/foo/NameProvider.class
|
||||
META-INF/versions/10/com/
|
||||
META-INF/versions/10/com/foo/
|
||||
META-INF/versions/10/com/foo/NameProvider.class
|
||||
```
|
||||
|
||||
As well as other information, the file `META-INF/MANIFEST.MF`, will contain
|
||||
the following lines to indicate that this is a multirelease JAR file with
|
||||
an entry point of `com.foo.Hello`.
|
||||
|
||||
```
|
||||
...
|
||||
Main-Class: com.foo.Hello
|
||||
Multi-Release: true
|
||||
```
|
||||
|
||||
Assuming that the `com.foo.Hello` class calls a method on the
|
||||
`com.foo.NameProvider` class, running the program using JDK 10 will ensure
|
||||
that the `com.foo.NameProvider` class is the one in
|
||||
`META-INF/versions/10/com/foo/`. Running the program using JDK 8 will
|
||||
ensure that the `com.foo.NameProvider` class is the one at the root of the
|
||||
JAR, in `com/foo`.
|
||||
|
||||
- Create an archive, `my.jar`, by reading options and lists of class files
|
||||
from the file `classes.list`.
|
||||
|
||||
**Note:**
|
||||
|
||||
To shorten or simplify the `jar` command, you can provide an arg file that lists
|
||||
the files to include in the JAR file and pass it to the `jar` command with the at sign (`@`)
|
||||
as a prefix.
|
||||
|
||||
> `jar --create --file my.jar @classes.list`
|
||||
|
||||
If one or more entries in the arg file cannot be found then the jar command fails without creating the JAR file.
|
||||
|
||||
- Extract the JAR file `foo.jar` to `/tmp/bar/` directory:
|
||||
|
||||
> `jar -xf foo.jar -C /tmp/bar/`
|
||||
|
||||
Alternatively, you can also do:
|
||||
|
||||
> `jar --extract --file foo.jar --dir /tmp/bar/`
|
File diff suppressed because it is too large
Load Diff
1089
src/jdk.jartool/share/man/jarsigner.md
Normal file
1089
src/jdk.jartool/share/man/jarsigner.md
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1214
src/jdk.javadoc/share/man/javadoc.md
Normal file
1214
src/jdk.javadoc/share/man/javadoc.md
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1032
src/jdk.jcmd/share/man/jcmd.md
Normal file
1032
src/jdk.jcmd/share/man/jcmd.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,103 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JINFO" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jinfo - generate Java configuration information for a specified Java
|
||||
process
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]Note:\f[R] This command is experimental and unsupported.
|
||||
.PP
|
||||
\f[V]jinfo\f[R] [\f[I]option\f[R]] \f[I]pid\f[R]
|
||||
.TP
|
||||
\f[I]option\f[R]
|
||||
This represents the \f[V]jinfo\f[R] command-line options.
|
||||
See \f[B]Options for the jinfo Command\f[R].
|
||||
.TP
|
||||
\f[I]pid\f[R]
|
||||
The process ID for which the configuration information is to be printed.
|
||||
The process must be a Java process.
|
||||
To get a list of Java processes running on a machine, use either the
|
||||
\f[V]ps\f[R] command or, if the JVM processes are not running in a
|
||||
separate docker instance, the \f[B]jps\f[R] command.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jinfo\f[R] command prints Java configuration information for a
|
||||
specified Java process.
|
||||
The configuration information includes Java system properties and JVM
|
||||
command-line flags.
|
||||
If the specified process is running on a 64-bit JVM, then you might need
|
||||
to specify the \f[V]-J-d64\f[R] option, for example:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jinfo -J-d64 -sysprops\f[R] \f[I]pid\f[R]
|
||||
.RE
|
||||
.PP
|
||||
This command is unsupported and might not be available in future
|
||||
releases of the JDK.
|
||||
In Windows Systems where \f[V]dbgeng.dll\f[R] is not present, the
|
||||
Debugging Tools for Windows must be installed to have these tools work.
|
||||
The \f[V]PATH\f[R] environment variable should contain the location of
|
||||
the \f[V]jvm.dll\f[R] that\[aq]s used by the target process or the
|
||||
location from which the core dump file was produced.
|
||||
.SH OPTIONS FOR THE JINFO COMMAND
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
If none of the following options are used, both the command-line flags
|
||||
and the system property name-value pairs are printed.
|
||||
.TP
|
||||
\f[V]-flag\f[R] \f[I]name\f[R]
|
||||
Prints the name and value of the specified command-line flag.
|
||||
.TP
|
||||
\f[V]-flag\f[R] [\f[V]+\f[R]|\f[V]-\f[R]]\f[I]name\f[R]
|
||||
Enables or disables the specified Boolean command-line flag.
|
||||
.TP
|
||||
\f[V]-flag\f[R] \f[I]name\f[R]\f[V]=\f[R]\f[I]value\f[R]
|
||||
Sets the specified command-line flag to the specified value.
|
||||
.TP
|
||||
\f[V]-flags\f[R]
|
||||
Prints command-line flags passed to the JVM.
|
||||
.TP
|
||||
\f[V]-sysprops\f[R]
|
||||
Prints Java system properties as name-value pairs.
|
||||
.TP
|
||||
\f[V]-h\f[R] or \f[V]-help\f[R]
|
||||
Prints a help message.
|
88
src/jdk.jcmd/share/man/jinfo.md
Normal file
88
src/jdk.jcmd/share/man/jinfo.md
Normal file
@ -0,0 +1,88 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JINFO(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jinfo - generate Java configuration information for a specified Java process
|
||||
|
||||
## Synopsis
|
||||
|
||||
**Note:** This command is experimental and unsupported.
|
||||
|
||||
`jinfo` \[*option*\] *pid*
|
||||
|
||||
*option*
|
||||
: This represents the `jinfo` command-line options. See [Options for the
|
||||
jinfo Command].
|
||||
|
||||
*pid*
|
||||
: The process ID for which the configuration information is to be printed.
|
||||
The process must be a Java process. To get a list of Java processes running
|
||||
on a machine, use either the `ps` command or, if the JVM processes are not
|
||||
running in a separate docker instance, the [jps](jps.html) command.
|
||||
|
||||
## Description
|
||||
|
||||
The `jinfo` command prints Java configuration information for a specified Java
|
||||
process. The configuration information includes Java system properties and JVM
|
||||
command-line flags. If the specified process is running on a 64-bit JVM, then
|
||||
you might need to specify the `-J-d64` option, for example:
|
||||
|
||||
> `jinfo -J-d64 -sysprops` *pid*
|
||||
|
||||
This command is unsupported and might not be available in future releases of
|
||||
the JDK. In Windows Systems where `dbgeng.dll` is not present, the Debugging
|
||||
Tools for Windows must be installed to have these tools work. The `PATH`
|
||||
environment variable should contain the location of the `jvm.dll` that's used
|
||||
by the target process or the location from which the core dump file was
|
||||
produced.
|
||||
|
||||
## Options for the jinfo Command
|
||||
|
||||
**Note:**
|
||||
|
||||
If none of the following options are used, both the command-line flags and the
|
||||
system property name-value pairs are printed.
|
||||
|
||||
`-flag` *name*
|
||||
: Prints the name and value of the specified command-line flag.
|
||||
|
||||
`-flag` \[`+`\|`-`\]*name*
|
||||
: Enables or disables the specified Boolean command-line flag.
|
||||
|
||||
`-flag` *name*`=`*value*
|
||||
: Sets the specified command-line flag to the specified value.
|
||||
|
||||
`-flags`
|
||||
: Prints command-line flags passed to the JVM.
|
||||
|
||||
`-sysprops`
|
||||
: Prints Java system properties as name-value pairs.
|
||||
|
||||
`-h` or `-help`
|
||||
: Prints a help message.
|
@ -1,106 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JMAP" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jmap - print details of a specified process
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]Note:\f[R] This command is experimental and unsupported.
|
||||
.PP
|
||||
\f[V]jmap\f[R] [\f[I]options\f[R]] \f[I]pid\f[R]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the \f[V]jmap\f[R] command-line options.
|
||||
See \f[B]Options for the jmap Command\f[R].
|
||||
.TP
|
||||
\f[I]pid\f[R]
|
||||
The process ID for which the information specified by the
|
||||
\f[I]options\f[R] is to be printed.
|
||||
The process must be a Java process.
|
||||
To get a list of Java processes running on a machine, use either the
|
||||
\f[V]ps\f[R] command or, if the JVM processes are not running in a
|
||||
separate docker instance, the \f[B]jps\f[R] command.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jmap\f[R] command prints details of a specified running
|
||||
process.
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
This command is unsupported and might not be available in future
|
||||
releases of the JDK.
|
||||
On Windows Systems where the \f[V]dbgeng.dll\f[R] file isn\[aq]t
|
||||
present, the Debugging Tools for Windows must be installed to make these
|
||||
tools work.
|
||||
The \f[V]PATH\f[R] environment variable should contain the location of
|
||||
the \f[V]jvm.dll\f[R] file that\[aq]s used by the target process or the
|
||||
location from which the core dump file was produced.
|
||||
.SH OPTIONS FOR THE JMAP COMMAND
|
||||
.TP
|
||||
\f[V]-clstats\f[R] \f[I]pid\f[R]
|
||||
Connects to a running process and prints class loader statistics of Java
|
||||
heap.
|
||||
.TP
|
||||
\f[V]-finalizerinfo\f[R] \f[I]pid\f[R]
|
||||
Connects to a running process and prints information on objects awaiting
|
||||
finalization.
|
||||
.TP
|
||||
\f[V]-histo\f[R][\f[V]:live\f[R]] \f[I]pid\f[R]
|
||||
Connects to a running process and prints a histogram of the Java object
|
||||
heap.
|
||||
If the \f[V]live\f[R] suboption is specified, it then counts only live
|
||||
objects.
|
||||
.TP
|
||||
\f[V]-dump:\f[R]\f[I]dump_options\f[R] \f[I]pid\f[R]
|
||||
Connects to a running process and dumps the Java heap.
|
||||
The \f[I]dump_options\f[R] include:
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
\f[V]live\f[R] --- When specified, dumps only the live objects; if not
|
||||
specified, then dumps all objects in the heap.
|
||||
.IP \[bu] 2
|
||||
\f[V]format=b\f[R] --- Dumps the Java heap in \f[V]hprof\f[R] binary
|
||||
format
|
||||
.IP \[bu] 2
|
||||
\f[V]file=\f[R]\f[I]filename\f[R] --- Dumps the heap to
|
||||
\f[I]filename\f[R]
|
||||
.PP
|
||||
Example: \f[V]jmap -dump:live,format=b,file=heap.bin\f[R] \f[I]pid\f[R]
|
||||
.RE
|
89
src/jdk.jcmd/share/man/jmap.md
Normal file
89
src/jdk.jcmd/share/man/jmap.md
Normal file
@ -0,0 +1,89 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JMAP(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jmap - print details of a specified process
|
||||
|
||||
## Synopsis
|
||||
|
||||
**Note:** This command is experimental and unsupported.
|
||||
|
||||
`jmap` \[*options*\] *pid*
|
||||
|
||||
*options*
|
||||
: This represents the `jmap` command-line options. See [Options for the jmap
|
||||
Command].
|
||||
|
||||
*pid*
|
||||
: The process ID for which the information specified by the *options* is to
|
||||
be printed. The process must be a Java process. To get a list of Java
|
||||
processes running on a machine, use either the `ps` command or, if the JVM
|
||||
processes are not running in a separate docker instance, the
|
||||
[jps](jps.html) command.
|
||||
|
||||
## Description
|
||||
|
||||
The `jmap` command prints details of a specified running process.
|
||||
|
||||
**Note:**
|
||||
|
||||
This command is unsupported and might not be available in future releases of
|
||||
the JDK. On Windows Systems where the `dbgeng.dll` file isn't present, the
|
||||
Debugging Tools for Windows must be installed to make these tools work. The
|
||||
`PATH` environment variable should contain the location of the `jvm.dll` file
|
||||
that's used by the target process or the location from which the core dump file
|
||||
was produced.
|
||||
|
||||
## Options for the jmap Command
|
||||
|
||||
`-clstats` *pid*
|
||||
: Connects to a running process and prints class loader statistics of Java
|
||||
heap.
|
||||
|
||||
`-finalizerinfo` *pid*
|
||||
: Connects to a running process and prints information on objects awaiting
|
||||
finalization.
|
||||
|
||||
`-histo`\[`:live`\] *pid*
|
||||
: Connects to a running process and prints a histogram of the Java object
|
||||
heap. If the `live` suboption is specified, it then counts only live
|
||||
objects.
|
||||
|
||||
`-dump:`*dump\_options* *pid*
|
||||
: Connects to a running process and dumps the Java heap. The *dump\_options*
|
||||
include:
|
||||
|
||||
- `live` --- When specified, dumps only the live objects; if not
|
||||
specified, then dumps all objects in the heap.
|
||||
|
||||
- `format=b` --- Dumps the Java heap in `hprof` binary format
|
||||
|
||||
- `file=`*filename* --- Dumps the heap to *filename*
|
||||
|
||||
Example: `jmap -dump:live,format=b,file=heap.bin` *pid*
|
@ -1,235 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JPS" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jps - list the instrumented JVMs on the target system
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]Note:\f[R] This command is experimental and unsupported.
|
||||
.PP
|
||||
\f[V]jps\f[R] [\f[V]-q\f[R]] [\f[V]-mlvV\f[R]] [\f[I]hostid\f[R]]
|
||||
.PP
|
||||
\f[V]jps\f[R] [\f[V]-help\f[R]]
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\f[V]-q\f[R]
|
||||
Suppresses the output of the class name, JAR file name, and arguments
|
||||
passed to the \f[V]main\f[R] method, producing a list of only local JVM
|
||||
identifiers.
|
||||
.TP
|
||||
\f[V]-mlvV\f[R]
|
||||
You can specify any combination of these options.
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
\f[V]-m\f[R] displays the arguments passed to the \f[V]main\f[R] method.
|
||||
The output may be \f[V]null\f[R] for embedded JVMs.
|
||||
.IP \[bu] 2
|
||||
\f[V]-l\f[R] displays the full package name for the application\[aq]s
|
||||
\f[V]main\f[R] class or the full path name to the application\[aq]s JAR
|
||||
file.
|
||||
.IP \[bu] 2
|
||||
\f[V]-v\f[R] displays the arguments passed to the JVM.
|
||||
.IP \[bu] 2
|
||||
\f[V]-V\f[R] suppresses the output of the class name, JAR file name, and
|
||||
arguments passed to the \f[V]main\f[R] method, producing a list of only
|
||||
local JVM identifiers.
|
||||
.RE
|
||||
.TP
|
||||
\f[I]hostid\f[R]
|
||||
The identifier of the host for which the process report should be
|
||||
generated.
|
||||
The \f[V]hostid\f[R] can include optional components that indicate the
|
||||
communications protocol, port number, and other implementation specific
|
||||
data.
|
||||
See \f[B]Host Identifier\f[R].
|
||||
.TP
|
||||
\f[V]-help\f[R]
|
||||
Displays the help message for the \f[V]jps\f[R] command.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jps\f[R] command lists the instrumented Java HotSpot VMs on the
|
||||
target system.
|
||||
The command is limited to reporting information on JVMs for which it has
|
||||
the access permissions.
|
||||
.PP
|
||||
If the \f[V]jps\f[R] command is run without specifying a
|
||||
\f[V]hostid\f[R], then it searches for instrumented JVMs on the local
|
||||
host.
|
||||
If started with a \f[V]hostid\f[R], then it searches for JVMs on the
|
||||
indicated host, using the specified protocol and port.
|
||||
A \f[V]jstatd\f[R] process is assumed to be running on the target host.
|
||||
.PP
|
||||
The \f[V]jps\f[R] command reports the local JVM identifier, or
|
||||
\f[V]lvmid\f[R], for each instrumented JVM found on the target system.
|
||||
The \f[V]lvmid\f[R] is typically, but not necessarily, the operating
|
||||
system\[aq]s process identifier for the JVM process.
|
||||
With no options, the \f[V]jps\f[R] command lists each Java
|
||||
application\[aq]s \f[V]lvmid\f[R] followed by the short form of the
|
||||
application\[aq]s class name or jar file name.
|
||||
The short form of the class name or JAR file name omits the class\[aq]s
|
||||
package information or the JAR files path information.
|
||||
.PP
|
||||
The \f[V]jps\f[R] command uses the Java launcher to find the class name
|
||||
and arguments passed to the main method.
|
||||
If the target JVM is started with a custom launcher, then the class or
|
||||
JAR file name, and the arguments to the \f[V]main\f[R] method aren\[aq]t
|
||||
available.
|
||||
In this case, the \f[V]jps\f[R] command outputs the string
|
||||
\f[V]Unknown\f[R] for the class name, or JAR file name, and for the
|
||||
arguments to the \f[V]main\f[R] method.
|
||||
.PP
|
||||
The list of JVMs produced by the \f[V]jps\f[R] command can be limited by
|
||||
the permissions granted to the principal running the command.
|
||||
The command lists only the JVMs for which the principal has access
|
||||
rights as determined by operating system-specific access control
|
||||
mechanisms.
|
||||
.SH HOST IDENTIFIER
|
||||
.PP
|
||||
The host identifier, or \f[V]hostid\f[R], is a string that indicates the
|
||||
target system.
|
||||
The syntax of the \f[V]hostid\f[R] string corresponds to the syntax of a
|
||||
URI:
|
||||
.RS
|
||||
.PP
|
||||
[\f[I]protocol\f[R]\f[V]:\f[R]][[\f[V]//\f[R]]\f[I]hostname\f[R]][\f[V]:\f[R]\f[I]port\f[R]][\f[V]/\f[R]\f[I]servername\f[R]]
|
||||
.RE
|
||||
.TP
|
||||
\f[I]protocol\f[R]
|
||||
The communications protocol.
|
||||
If the \f[I]protocol\f[R] is omitted and a \f[I]hostname\f[R] isn\[aq]t
|
||||
specified, then the default protocol is a platform-specific, optimized,
|
||||
local protocol.
|
||||
If the protocol is omitted and a host name is specified, then the
|
||||
default protocol is \f[V]rmi\f[R].
|
||||
.TP
|
||||
\f[I]hostname\f[R]
|
||||
A host name or IP address that indicates the target host.
|
||||
If you omit the \f[I]hostname\f[R] parameter, then the target host is
|
||||
the local host.
|
||||
.TP
|
||||
\f[I]port\f[R]
|
||||
The default port for communicating with the remote server.
|
||||
If the \f[I]hostname\f[R] parameter is omitted or the \f[I]protocol\f[R]
|
||||
parameter specifies an optimized, local protocol, then the
|
||||
\f[I]port\f[R] parameter is ignored.
|
||||
Otherwise, treatment of the \f[I]port\f[R] parameter is
|
||||
implementation-specific.
|
||||
For the default \f[V]rmi\f[R] protocol, the \f[I]port\f[R] parameter
|
||||
indicates the port number for the \f[V]rmiregistry\f[R] on the remote
|
||||
host.
|
||||
If the \f[I]port\f[R] parameter is omitted, and the \f[I]protocol\f[R]
|
||||
parameter indicates \f[V]rmi\f[R], then the default
|
||||
\f[V]rmiregistry\f[R] port (\f[V]1099\f[R]) is used.
|
||||
.TP
|
||||
\f[I]servername\f[R]
|
||||
The treatment of this parameter depends on the implementation.
|
||||
For the optimized, local protocol, this field is ignored.
|
||||
For the \f[V]rmi\f[R] protocol, this parameter is a string that
|
||||
represents the name of the RMI remote object on the remote host.
|
||||
See the \f[B]jstatd\f[R] command \f[V]-n\f[R] option.
|
||||
.SH OUTPUT FORMAT OF THE JPS COMMAND
|
||||
.PP
|
||||
The output of the \f[V]jps\f[R] command has the following pattern:
|
||||
.RS
|
||||
.PP
|
||||
\f[I]lvmid\f[R] [ [ \f[I]classname\f[R] | \f[I]JARfilename\f[R] |
|
||||
\f[V]\[dq]Unknown\[dq]\f[R]] [ \f[I]arg\f[R]* ] [ \f[I]jvmarg\f[R]* ] ]
|
||||
.RE
|
||||
.PP
|
||||
All output tokens are separated by white space.
|
||||
An \f[V]arg\f[R] value that includes embedded white space introduces
|
||||
ambiguity when attempting to map arguments to their actual positional
|
||||
parameters.
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
It\[aq]s recommended that you don\[aq]t write scripts to parse
|
||||
\f[V]jps\f[R] output because the format might change in future releases.
|
||||
If you write scripts that parse \f[V]jps\f[R] output, then expect to
|
||||
modify them for future releases of this tool.
|
||||
.SH EXAMPLES
|
||||
.PP
|
||||
This section provides examples of the \f[V]jps\f[R] command.
|
||||
.PP
|
||||
List the instrumented JVMs on the local host:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jps
|
||||
18027 Java2Demo.JAR
|
||||
18032 jps
|
||||
18005 jstat
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following example lists the instrumented JVMs on a remote host.
|
||||
This example assumes that the \f[V]jstat\f[R] server and either the its
|
||||
internal RMI registry or a separate external \f[V]rmiregistry\f[R]
|
||||
process are running on the remote host on the default port (port
|
||||
\f[V]1099\f[R]).
|
||||
It also assumes that the local host has appropriate permissions to
|
||||
access the remote host.
|
||||
This example includes the \f[V]-l\f[R] option to output the long form of
|
||||
the class names or JAR file names.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jps -l remote.domain
|
||||
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
|
||||
2857 sun.tools.jstatd.jstatd
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following example lists the instrumented JVMs on a remote host with
|
||||
a nondefault port for the RMI registry.
|
||||
This example assumes that the \f[V]jstatd\f[R] server, with an internal
|
||||
RMI registry bound to port \f[V]2002\f[R], is running on the remote
|
||||
host.
|
||||
This example also uses the \f[V]-m\f[R] option to include the arguments
|
||||
passed to the \f[V]main\f[R] method of each of the listed Java
|
||||
applications.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jps -m remote.domain:2002
|
||||
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
|
||||
3102 sun.tools.jstatd.jstatd -p 2002
|
||||
\f[R]
|
||||
.fi
|
189
src/jdk.jcmd/share/man/jps.md
Normal file
189
src/jdk.jcmd/share/man/jps.md
Normal file
@ -0,0 +1,189 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JPS(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jps - list the instrumented JVMs on the target system
|
||||
|
||||
## Synopsis
|
||||
|
||||
**Note:** This command is experimental and unsupported.
|
||||
|
||||
`jps` \[`-q`\] \[`-mlvV`\] \[*hostid*\]
|
||||
|
||||
`jps` \[`-help`\]
|
||||
|
||||
## Options
|
||||
|
||||
`-q`
|
||||
: Suppresses the output of the class name, JAR file name, and arguments
|
||||
passed to the `main` method, producing a list of only local JVM
|
||||
identifiers.
|
||||
|
||||
`-mlvV`
|
||||
: You can specify any combination of these options.
|
||||
|
||||
- `-m` displays the arguments passed to the `main` method. The output may
|
||||
be `null` for embedded JVMs.
|
||||
|
||||
- `-l` displays the full package name for the application's `main` class
|
||||
or the full path name to the application's JAR file.
|
||||
|
||||
- `-v` displays the arguments passed to the JVM.
|
||||
|
||||
- `-V` suppresses the output of the class name, JAR file name, and
|
||||
arguments passed to the `main` method, producing a list of only local
|
||||
JVM identifiers.
|
||||
|
||||
*hostid*
|
||||
: The identifier of the host for which the process report should be
|
||||
generated. The `hostid` can include optional components that indicate the
|
||||
communications protocol, port number, and other implementation specific
|
||||
data. See [Host Identifier].
|
||||
|
||||
`-help`
|
||||
: Displays the help message for the `jps` command.
|
||||
|
||||
## Description
|
||||
|
||||
The `jps` command lists the instrumented Java HotSpot VMs on the target system.
|
||||
The command is limited to reporting information on JVMs for which it has the
|
||||
access permissions.
|
||||
|
||||
If the `jps` command is run without specifying a `hostid`, then it searches for
|
||||
instrumented JVMs on the local host. If started with a `hostid`, then it
|
||||
searches for JVMs on the indicated host, using the specified protocol and port.
|
||||
A `jstatd` process is assumed to be running on the target host.
|
||||
|
||||
The `jps` command reports the local JVM identifier, or `lvmid`, for each
|
||||
instrumented JVM found on the target system. The `lvmid` is typically, but not
|
||||
necessarily, the operating system's process identifier for the JVM process.
|
||||
With no options, the `jps` command lists each Java application's `lvmid`
|
||||
followed by the short form of the application's class name or jar file name.
|
||||
The short form of the class name or JAR file name omits the class's package
|
||||
information or the JAR files path information.
|
||||
|
||||
The `jps` command uses the Java launcher to find the class name and arguments
|
||||
passed to the main method. If the target JVM is started with a custom launcher,
|
||||
then the class or JAR file name, and the arguments to the `main` method aren't
|
||||
available. In this case, the `jps` command outputs the string `Unknown` for the
|
||||
class name, or JAR file name, and for the arguments to the `main` method.
|
||||
|
||||
The list of JVMs produced by the `jps` command can be limited by the
|
||||
permissions granted to the principal running the command. The command lists
|
||||
only the JVMs for which the principal has access rights as determined by
|
||||
operating system-specific access control mechanisms.
|
||||
|
||||
## Host Identifier
|
||||
|
||||
The host identifier, or `hostid`, is a string that indicates the target system.
|
||||
The syntax of the `hostid` string corresponds to the syntax of a URI:
|
||||
|
||||
> \[*protocol*`:`\]\[\[`//`\]*hostname*\]\[`:`*port*\]\[`/`*servername*\]
|
||||
|
||||
*protocol*
|
||||
: The communications protocol. If the *protocol* is omitted and a *hostname*
|
||||
isn't specified, then the default protocol is a platform-specific,
|
||||
optimized, local protocol. If the protocol is omitted and a host name is
|
||||
specified, then the default protocol is `rmi`.
|
||||
|
||||
*hostname*
|
||||
: A host name or IP address that indicates the target host. If you omit the
|
||||
*hostname* parameter, then the target host is the local host.
|
||||
|
||||
*port*
|
||||
: The default port for communicating with the remote server. If the
|
||||
*hostname* parameter is omitted or the *protocol* parameter specifies an
|
||||
optimized, local protocol, then the *port* parameter is ignored. Otherwise,
|
||||
treatment of the *port* parameter is implementation-specific. For the
|
||||
default `rmi` protocol, the *port* parameter indicates the port number for
|
||||
the `rmiregistry` on the remote host. If the *port* parameter is omitted,
|
||||
and the *protocol* parameter indicates `rmi`, then the default
|
||||
`rmiregistry` port (`1099`) is used.
|
||||
|
||||
*servername*
|
||||
: The treatment of this parameter depends on the implementation. For the
|
||||
optimized, local protocol, this field is ignored. For the `rmi` protocol,
|
||||
this parameter is a string that represents the name of the RMI remote
|
||||
object on the remote host. See the [jstatd](jstatd.html) command `-n`
|
||||
option.
|
||||
|
||||
## Output Format of the jps Command
|
||||
|
||||
The output of the `jps` command has the following pattern:
|
||||
|
||||
> *lvmid* \[ \[ *classname* \| *JARfilename* \| `"Unknown"`\] \[ *arg*\* \]
|
||||
\[ *jvmarg*\* \] \]
|
||||
|
||||
All output tokens are separated by white space. An `arg` value that includes
|
||||
embedded white space introduces ambiguity when attempting to map arguments to
|
||||
their actual positional parameters.
|
||||
|
||||
**Note:**
|
||||
|
||||
It's recommended that you don't write scripts to parse `jps` output because the
|
||||
format might change in future releases. If you write scripts that parse `jps`
|
||||
output, then expect to modify them for future releases of this tool.
|
||||
|
||||
## Examples
|
||||
|
||||
This section provides examples of the `jps` command.
|
||||
|
||||
List the instrumented JVMs on the local host:
|
||||
|
||||
```
|
||||
jps
|
||||
18027 Java2Demo.JAR
|
||||
18032 jps
|
||||
18005 jstat
|
||||
```
|
||||
|
||||
The following example lists the instrumented JVMs on a remote host. This
|
||||
example assumes that the `jstat` server and either the its internal RMI
|
||||
registry or a separate external `rmiregistry` process are running on the remote
|
||||
host on the default port (port `1099`). It also assumes that the local host has
|
||||
appropriate permissions to access the remote host. This example includes the
|
||||
`-l` option to output the long form of the class names or JAR file names.
|
||||
|
||||
```
|
||||
jps -l remote.domain
|
||||
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
|
||||
2857 sun.tools.jstatd.jstatd
|
||||
```
|
||||
|
||||
The following example lists the instrumented JVMs on a remote host with a
|
||||
nondefault port for the RMI registry. This example assumes that the `jstatd`
|
||||
server, with an internal RMI registry bound to port `2002`, is running on the
|
||||
remote host. This example also uses the `-m` option to include the arguments
|
||||
passed to the `main` method of each of the listed Java applications.
|
||||
|
||||
```
|
||||
jps -m remote.domain:2002
|
||||
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
|
||||
3102 sun.tools.jstatd.jstatd -p 2002
|
||||
```
|
@ -1,89 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JSTACK" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jstack - print Java stack traces of Java threads for a specified Java
|
||||
process
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]Note:\f[R] This command is experimental and unsupported.
|
||||
.PP
|
||||
\f[V]jstack\f[R] [\f[I]options\f[R]] \f[I]pid\f[R]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the \f[V]jstack\f[R] command-line options.
|
||||
See \f[B]Options for the jstack Command\f[R].
|
||||
.TP
|
||||
\f[I]pid\f[R]
|
||||
The process ID for which the stack trace is printed.
|
||||
The process must be a Java process.
|
||||
To get a list of Java processes running on a machine, use either the
|
||||
\f[V]ps\f[R] command or, if the JVM processes are not running in a
|
||||
separate docker instance, the \f[B]jps\f[R] command.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jstack\f[R] command prints Java stack traces of Java threads
|
||||
for a specified Java process.
|
||||
For each Java frame, the full class name, method name, byte code index
|
||||
(BCI), and line number, when available, are printed.
|
||||
C++ mangled names aren\[aq]t demangled.
|
||||
To demangle C++ names, the output of this command can be piped to
|
||||
\f[V]c++filt\f[R].
|
||||
When the specified process is running on a 64-bit JVM, you might need to
|
||||
specify the \f[V]-J-d64\f[R] option, for example:
|
||||
\f[V]jstack -J-d64\f[R] \f[I]pid\f[R].
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
This command is unsupported and might not be available in future
|
||||
releases of the JDK.
|
||||
In Windows Systems where the \f[V]dbgeng.dll\f[R] file isn\[aq]t
|
||||
present, the Debugging Tools for Windows must be installed so that these
|
||||
tools work.
|
||||
The \f[V]PATH\f[R] environment variable needs to contain the location of
|
||||
the \f[V]jvm.dll\f[R] that is used by the target process, or the
|
||||
location from which the core dump file was produced.
|
||||
.SH OPTIONS FOR THE JSTACK COMMAND
|
||||
.TP
|
||||
\f[V]-l\f[R]
|
||||
The long listing option prints additional information about locks.
|
||||
.TP
|
||||
\f[V]-h\f[R] or \f[V]-help\f[R]
|
||||
Prints a help message.
|
73
src/jdk.jcmd/share/man/jstack.md
Normal file
73
src/jdk.jcmd/share/man/jstack.md
Normal file
@ -0,0 +1,73 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JSTACK(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jstack - print Java stack traces of Java threads for a specified Java process
|
||||
|
||||
## Synopsis
|
||||
|
||||
**Note:** This command is experimental and unsupported.
|
||||
|
||||
`jstack` \[*options*\] *pid*
|
||||
|
||||
*options*
|
||||
: This represents the `jstack` command-line options. See [Options for the
|
||||
jstack Command].
|
||||
|
||||
*pid*
|
||||
: The process ID for which the stack trace is printed. The process must be a
|
||||
Java process. To get a list of Java processes running on a machine, use
|
||||
either the `ps` command or, if the JVM processes are not running in a
|
||||
separate docker instance, the [jps](jps.html) command.
|
||||
|
||||
## Description
|
||||
|
||||
The `jstack` command prints Java stack traces of Java threads for a specified
|
||||
Java process. For each Java frame, the full class name, method name, byte code
|
||||
index (BCI), and line number, when available, are printed. C++ mangled names
|
||||
aren't demangled. To demangle C++ names, the output of this command can be
|
||||
piped to `c++filt`. When the specified process is running on a 64-bit JVM, you
|
||||
might need to specify the `-J-d64` option, for example: `jstack -J-d64` *pid*.
|
||||
|
||||
**Note:**
|
||||
|
||||
This command is unsupported and might not be available in future releases of
|
||||
the JDK. In Windows Systems where the `dbgeng.dll` file isn't present, the
|
||||
Debugging Tools for Windows must be installed so that these tools work. The
|
||||
`PATH` environment variable needs to contain the location of the `jvm.dll` that
|
||||
is used by the target process, or the location from which the core dump file
|
||||
was produced.
|
||||
|
||||
## Options for the jstack Command
|
||||
|
||||
`-l`
|
||||
: The long listing option prints additional information about locks.
|
||||
|
||||
`-h` or `-help`
|
||||
: Prints a help message.
|
@ -1,689 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2023, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JSTAT" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jstat - monitor JVM statistics
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]Note:\f[R] This command is experimental and unsupported.
|
||||
.PP
|
||||
\f[V]jstat\f[R] \f[I]generalOptions\f[R]
|
||||
.PP
|
||||
\f[V]jstat\f[R] \f[I]outputOptions\f[R] [\f[V]-t\f[R]] [\f[V]-h\f[R]
|
||||
\f[I]lines\f[R]] \f[I]vmid\f[R] [\f[I]interval\f[R] [\f[I]count\f[R]]]
|
||||
.TP
|
||||
\f[I]generalOptions\f[R]
|
||||
A single general command-line option.
|
||||
See \f[B]General Options\f[R].
|
||||
.TP
|
||||
\f[I]outputOptions\f[R]
|
||||
An option reported by the \f[V]-options\f[R] option.
|
||||
One or more output options that consist of a single
|
||||
\f[V]statOption\f[R], plus any of the \f[V]-t\f[R], \f[V]-h\f[R], and
|
||||
\f[V]-J\f[R] options.
|
||||
See \f[B]Output Options for the jstat Command\f[R].
|
||||
.TP
|
||||
\f[V]-t\f[R]
|
||||
Displays a time-stamp column as the first column of output.
|
||||
The time stamp is the time since the start time of the target JVM.
|
||||
.TP
|
||||
\f[V]-h\f[R] \f[I]n\f[R]
|
||||
Displays a column header every \f[I]n\f[R] samples (output rows), where
|
||||
\f[I]n\f[R] is a positive integer.
|
||||
The default value is \f[V]0\f[R], which displays the column header of
|
||||
the first row of data.
|
||||
.TP
|
||||
\f[I]vmid\f[R]
|
||||
A virtual machine identifier, which is a string that indicates the
|
||||
target JVM.
|
||||
See \f[B]Virtual Machine Identifier\f[R].
|
||||
.TP
|
||||
\f[I]interval\f[R]
|
||||
The sampling interval in the specified units, seconds (s) or
|
||||
milliseconds (ms).
|
||||
Default units are milliseconds.
|
||||
This must be a positive integer.
|
||||
When specified, the \f[V]jstat\f[R] command produces its output at each
|
||||
interval.
|
||||
.TP
|
||||
\f[I]count\f[R]
|
||||
The number of samples to display.
|
||||
The default value is infinity, which causes the \f[V]jstat\f[R] command
|
||||
to display statistics until the target JVM terminates or the
|
||||
\f[V]jstat\f[R] command is terminated.
|
||||
This value must be a positive integer.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jstat\f[R] command displays performance statistics for an
|
||||
instrumented Java HotSpot VM.
|
||||
The target JVM is identified by its virtual machine identifier, or
|
||||
\f[V]vmid\f[R] option.
|
||||
.PP
|
||||
The \f[V]jstat\f[R] command supports two types of options, general
|
||||
options and output options.
|
||||
General options cause the \f[V]jstat\f[R] command to display simple
|
||||
usage and version information.
|
||||
Output options determine the content and format of the statistical
|
||||
output.
|
||||
.PP
|
||||
All options and their functionality are subject to change or removal in
|
||||
future releases.
|
||||
.SH GENERAL OPTIONS
|
||||
.PP
|
||||
If you specify one of the general options, then you can\[aq]t specify
|
||||
any other option or parameter.
|
||||
.TP
|
||||
\f[V]-help\f[R]
|
||||
Displays a help message.
|
||||
.TP
|
||||
\f[V]-options\f[R]
|
||||
Displays a list of static options.
|
||||
See \f[B]Output Options for the jstat Command\f[R].
|
||||
.SH OUTPUT OPTIONS FOR THE JSTAT COMMAND
|
||||
.PP
|
||||
If you don\[aq]t specify a general option, then you can specify output
|
||||
options.
|
||||
Output options determine the content and format of the \f[V]jstat\f[R]
|
||||
command\[aq]s output, and consist of a single \f[V]statOption\f[R], plus
|
||||
any of the other output options (\f[V]-h\f[R], \f[V]-t\f[R], and
|
||||
\f[V]-J\f[R]).
|
||||
The \f[V]statOption\f[R] must come first.
|
||||
.PP
|
||||
Output is formatted as a table, with columns that are separated by
|
||||
spaces.
|
||||
A header row with titles describes the columns.
|
||||
Use the \f[V]-h\f[R] option to set the frequency at which the header is
|
||||
displayed.
|
||||
Column header names are consistent among the different options.
|
||||
In general, if two options provide a column with the same name, then the
|
||||
data source for the two columns is the same.
|
||||
.PP
|
||||
Use the \f[V]-t\f[R] option to display a time-stamp column, labeled
|
||||
Timestamp as the first column of output.
|
||||
The Timestamp column contains the elapsed time, in seconds, since the
|
||||
target JVM started.
|
||||
The resolution of the time stamp is dependent on various factors and is
|
||||
subject to variation due to delayed thread scheduling on heavily loaded
|
||||
systems.
|
||||
.PP
|
||||
Use the interval and count parameters to determine how frequently and
|
||||
how many times, respectively, the \f[V]jstat\f[R] command displays its
|
||||
output.
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
Don\[aq]t write scripts to parse the \f[V]jstat\f[R] command\[aq]s
|
||||
output because the format might change in future releases.
|
||||
If you write scripts that parse the \f[V]jstat\f[R] command output, then
|
||||
expect to modify them for future releases of this tool.
|
||||
.TP
|
||||
\f[V]-statOption\f[R]
|
||||
Determines the statistics information that the \f[V]jstat\f[R] command
|
||||
displays.
|
||||
The following lists the available options.
|
||||
Use the \f[V]-options\f[R] general option to display the list of options
|
||||
for a particular platform installation.
|
||||
See \f[B]Stat Options and Output\f[R].
|
||||
.RS
|
||||
.PP
|
||||
\f[V]class\f[R]: Displays statistics about the behavior of the class
|
||||
loader.
|
||||
.PP
|
||||
\f[V]compiler\f[R]: Displays statistics about the behavior of the Java
|
||||
HotSpot VM Just-in-Time compiler.
|
||||
.PP
|
||||
\f[V]gc\f[R]: Displays statistics about the behavior of the garbage
|
||||
collected heap.
|
||||
.PP
|
||||
\f[V]gccapacity\f[R]: Displays statistics about the capacities of the
|
||||
generations and their corresponding spaces.
|
||||
.PP
|
||||
\f[V]gccause\f[R]: Displays a summary about garbage collection
|
||||
statistics (same as \f[V]-gcutil\f[R]), with the cause of the last and
|
||||
current (when applicable) garbage collection events.
|
||||
.PP
|
||||
\f[V]gcnew\f[R]: Displays statistics about the behavior of the new
|
||||
generation.
|
||||
.PP
|
||||
\f[V]gcnewcapacity\f[R]: Displays statistics about the sizes of the new
|
||||
generations and their corresponding spaces.
|
||||
.PP
|
||||
\f[V]gcold\f[R]: Displays statistics about the behavior of the old
|
||||
generation and metaspace statistics.
|
||||
.PP
|
||||
\f[V]gcoldcapacity\f[R]: Displays statistics about the sizes of the old
|
||||
generation.
|
||||
.PP
|
||||
\f[V]gcmetacapacity\f[R]: Displays statistics about the sizes of the
|
||||
metaspace.
|
||||
.PP
|
||||
\f[V]gcutil\f[R]: Displays a summary about garbage collection
|
||||
statistics.
|
||||
.PP
|
||||
\f[V]printcompilation\f[R]: Displays Java HotSpot VM compilation method
|
||||
statistics.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]javaOption\f[R]
|
||||
Passes \f[I]javaOption\f[R] to the Java application launcher.
|
||||
For example, \f[V]-J-Xms48m\f[R] sets the startup memory to 48 MB.
|
||||
For a complete list of options, see \f[B]java\f[R].
|
||||
.SH STAT OPTIONS AND OUTPUT
|
||||
.PP
|
||||
The following information summarizes the columns that the
|
||||
\f[V]jstat\f[R] command outputs for each \f[I]statOption\f[R].
|
||||
.TP
|
||||
\f[V]-class\f[R] \f[I]option\f[R]
|
||||
Class loader statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]Loaded\f[R]: Number of classes loaded.
|
||||
.PP
|
||||
\f[V]Bytes\f[R]: Number of KB loaded.
|
||||
.PP
|
||||
\f[V]Unloaded\f[R]: Number of classes unloaded.
|
||||
.PP
|
||||
\f[V]Bytes\f[R]: Number of KB unloaded.
|
||||
.PP
|
||||
\f[V]Time\f[R]: Time spent performing class loading and unloading
|
||||
operations.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-compiler\f[R] \f[I]option\f[R]
|
||||
Java HotSpot VM Just-in-Time compiler statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]Compiled\f[R]: Number of compilation tasks performed.
|
||||
.PP
|
||||
\f[V]Failed\f[R]: Number of compilations tasks failed.
|
||||
.PP
|
||||
\f[V]Invalid\f[R]: Number of compilation tasks that were invalidated.
|
||||
.PP
|
||||
\f[V]Time\f[R]: Time spent performing compilation tasks.
|
||||
.PP
|
||||
\f[V]FailedType\f[R]: Compile type of the last failed compilation.
|
||||
.PP
|
||||
\f[V]FailedMethod\f[R]: Class name and method of the last failed
|
||||
compilation.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gc\f[R] \f[I]option\f[R]
|
||||
Garbage collected heap statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]S0C\f[R]: Current survivor space 0 capacity (KB).
|
||||
.PP
|
||||
\f[V]S1C\f[R]: Current survivor space 1 capacity (KB).
|
||||
.PP
|
||||
\f[V]S0U\f[R]: Survivor space 0 utilization (KB).
|
||||
.PP
|
||||
\f[V]S1U\f[R]: Survivor space 1 utilization (KB).
|
||||
.PP
|
||||
\f[V]EC\f[R]: Current eden space capacity (KB).
|
||||
.PP
|
||||
\f[V]EU\f[R]: Eden space utilization (KB).
|
||||
.PP
|
||||
\f[V]OC\f[R]: Current old space capacity (KB).
|
||||
.PP
|
||||
\f[V]OU\f[R]: Old space utilization (KB).
|
||||
.PP
|
||||
\f[V]MC\f[R]: Metaspace Committed Size (KB).
|
||||
.PP
|
||||
\f[V]MU\f[R]: Metaspace utilization (KB).
|
||||
.PP
|
||||
\f[V]CCSC\f[R]: Compressed class committed size (KB).
|
||||
.PP
|
||||
\f[V]CCSU\f[R]: Compressed class space used (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation garbage collection (GC)
|
||||
events.
|
||||
.PP
|
||||
\f[V]YGCT\f[R]: Young generation garbage collection time.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.PP
|
||||
\f[V]FGCT\f[R]: Full garbage collection time.
|
||||
.PP
|
||||
\f[V]GCT\f[R]: Total garbage collection time.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gccapacity\f[R] \f[I]option\f[R]
|
||||
Memory pool generation and space capacities.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]NGCMN\f[R]: Minimum new generation capacity (KB).
|
||||
.PP
|
||||
\f[V]NGCMX\f[R]: Maximum new generation capacity (KB).
|
||||
.PP
|
||||
\f[V]NGC\f[R]: Current new generation capacity (KB).
|
||||
.PP
|
||||
\f[V]S0C\f[R]: Current survivor space 0 capacity (KB).
|
||||
.PP
|
||||
\f[V]S1C\f[R]: Current survivor space 1 capacity (KB).
|
||||
.PP
|
||||
\f[V]EC\f[R]: Current eden space capacity (KB).
|
||||
.PP
|
||||
\f[V]OGCMN\f[R]: Minimum old generation capacity (KB).
|
||||
.PP
|
||||
\f[V]OGCMX\f[R]: Maximum old generation capacity (KB).
|
||||
.PP
|
||||
\f[V]OGC\f[R]: Current old generation capacity (KB).
|
||||
.PP
|
||||
\f[V]OC\f[R]: Current old space capacity (KB).
|
||||
.PP
|
||||
\f[V]MCMN\f[R]: Minimum metaspace capacity (KB).
|
||||
.PP
|
||||
\f[V]MCMX\f[R]: Maximum metaspace capacity (KB).
|
||||
.PP
|
||||
\f[V]MC\f[R]: Metaspace Committed Size (KB).
|
||||
.PP
|
||||
\f[V]CCSMN\f[R]: Compressed class space minimum capacity (KB).
|
||||
.PP
|
||||
\f[V]CCSMX\f[R]: Compressed class space maximum capacity (KB).
|
||||
.PP
|
||||
\f[V]CCSC\f[R]: Compressed class committed size (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gccause\f[R] \f[I]option\f[R]
|
||||
This option displays the same summary of garbage collection statistics
|
||||
as the \f[V]-gcutil\f[R] option, but includes the causes of the last
|
||||
garbage collection event and (when applicable), the current garbage
|
||||
collection event.
|
||||
In addition to the columns listed for \f[V]-gcutil\f[R], this option
|
||||
adds the following columns:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]LGCC\f[R]: Cause of last garbage collection
|
||||
.PP
|
||||
\f[V]GCC\f[R]: Cause of current garbage collection
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gcnew\f[R] \f[I]option\f[R]
|
||||
New generation statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]S0C\f[R]: Current survivor space 0 capacity (KB).
|
||||
.PP
|
||||
\f[V]S1C\f[R]: Current survivor space 1 capacity (KB).
|
||||
.PP
|
||||
\f[V]S0U\f[R]: Survivor space 0 utilization (KB).
|
||||
.PP
|
||||
\f[V]S1U\f[R]: Survivor space 1 utilization (KB).
|
||||
.PP
|
||||
\f[V]TT\f[R]: Tenuring threshold.
|
||||
.PP
|
||||
\f[V]MTT\f[R]: Maximum tenuring threshold.
|
||||
.PP
|
||||
\f[V]DSS\f[R]: Desired survivor size (KB).
|
||||
.PP
|
||||
\f[V]EC\f[R]: Current eden space capacity (KB).
|
||||
.PP
|
||||
\f[V]EU\f[R]: Eden space utilization (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]YGCT\f[R]: Young generation garbage collection time.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gcnewcapacity\f[R] \f[I]option\f[R]
|
||||
New generation space size statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]NGCMN\f[R]: Minimum new generation capacity (KB).
|
||||
.PP
|
||||
\f[V]NGCMX\f[R]: Maximum new generation capacity (KB).
|
||||
.PP
|
||||
\f[V]NGC\f[R]: Current new generation capacity (KB).
|
||||
.PP
|
||||
\f[V]S0CMX\f[R]: Maximum survivor space 0 capacity (KB).
|
||||
.PP
|
||||
\f[V]S0C\f[R]: Current survivor space 0 capacity (KB).
|
||||
.PP
|
||||
\f[V]S1CMX\f[R]: Maximum survivor space 1 capacity (KB).
|
||||
.PP
|
||||
\f[V]S1C\f[R]: Current survivor space 1 capacity (KB).
|
||||
.PP
|
||||
\f[V]ECMX\f[R]: Maximum eden space capacity (KB).
|
||||
.PP
|
||||
\f[V]EC\f[R]: Current eden space capacity (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gcold\f[R] \f[I]option\f[R]
|
||||
Old generation size statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]MC\f[R]: Metaspace Committed Size (KB).
|
||||
.PP
|
||||
\f[V]MU\f[R]: Metaspace utilization (KB).
|
||||
.PP
|
||||
\f[V]CCSC\f[R]: Compressed class committed size (KB).
|
||||
.PP
|
||||
\f[V]CCSU\f[R]: Compressed class space used (KB).
|
||||
.PP
|
||||
\f[V]OC\f[R]: Current old space capacity (KB).
|
||||
.PP
|
||||
\f[V]OU\f[R]: Old space utilization (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.PP
|
||||
\f[V]FGCT\f[R]: Full garbage collection time.
|
||||
.PP
|
||||
\f[V]GCT\f[R]: Total garbage collection time.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gcoldcapacity\f[R] \f[I]option\f[R]
|
||||
Old generation statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]OGCMN\f[R]: Minimum old generation capacity (KB).
|
||||
.PP
|
||||
\f[V]OGCMX\f[R]: Maximum old generation capacity (KB).
|
||||
.PP
|
||||
\f[V]OGC\f[R]: Current old generation capacity (KB).
|
||||
.PP
|
||||
\f[V]OC\f[R]: Current old space capacity (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.PP
|
||||
\f[V]FGCT\f[R]: Full garbage collection time.
|
||||
.PP
|
||||
\f[V]GCT\f[R]: Total garbage collection time.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gcmetacapacity\f[R] \f[I]option\f[R]
|
||||
Metaspace size statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]MCMN\f[R]: Minimum metaspace capacity (KB).
|
||||
.PP
|
||||
\f[V]MCMX\f[R]: Maximum metaspace capacity (KB).
|
||||
.PP
|
||||
\f[V]MC\f[R]: Metaspace Committed Size (KB).
|
||||
.PP
|
||||
\f[V]CCSMN\f[R]: Compressed class space minimum capacity (KB).
|
||||
.PP
|
||||
\f[V]CCSMX\f[R]: Compressed class space maximum capacity (KB).
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.PP
|
||||
\f[V]FGCT\f[R]: Full garbage collection time.
|
||||
.PP
|
||||
\f[V]GCT\f[R]: Total garbage collection time.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-gcutil\f[R] \f[I]option\f[R]
|
||||
Summary of garbage collection statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]S0\f[R]: Survivor space 0 utilization as a percentage of the
|
||||
space\[aq]s current capacity.
|
||||
.PP
|
||||
\f[V]S1\f[R]: Survivor space 1 utilization as a percentage of the
|
||||
space\[aq]s current capacity.
|
||||
.PP
|
||||
\f[V]E\f[R]: Eden space utilization as a percentage of the space\[aq]s
|
||||
current capacity.
|
||||
.PP
|
||||
\f[V]O\f[R]: Old space utilization as a percentage of the space\[aq]s
|
||||
current capacity.
|
||||
.PP
|
||||
\f[V]M\f[R]: Metaspace utilization as a percentage of the space\[aq]s
|
||||
current capacity.
|
||||
.PP
|
||||
\f[V]CCS\f[R]: Compressed class space utilization as a percentage.
|
||||
.PP
|
||||
\f[V]YGC\f[R]: Number of young generation GC events.
|
||||
.PP
|
||||
\f[V]YGCT\f[R]: Young generation garbage collection time.
|
||||
.PP
|
||||
\f[V]FGC\f[R]: Number of full GC events.
|
||||
.PP
|
||||
\f[V]FGCT\f[R]: Full garbage collection time.
|
||||
.PP
|
||||
\f[V]GCT\f[R]: Total garbage collection time.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-printcompilation\f[R] \f[I]option\f[R]
|
||||
Java HotSpot VM compiler method statistics.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]Compiled\f[R]: Number of compilation tasks performed by the most
|
||||
recently compiled method.
|
||||
.PP
|
||||
\f[V]Size\f[R]: Number of bytes of byte code of the most recently
|
||||
compiled method.
|
||||
.PP
|
||||
\f[V]Type\f[R]: Compilation type of the most recently compiled method.
|
||||
.PP
|
||||
\f[V]Method\f[R]: Class name and method name identifying the most
|
||||
recently compiled method.
|
||||
Class name uses a slash (/) instead of a dot (.)
|
||||
as a name space separator.
|
||||
The method name is the method within the specified class.
|
||||
The format for these two fields is consistent with the HotSpot
|
||||
\f[V]-XX:+PrintCompilation\f[R] option.
|
||||
.RE
|
||||
.SH VIRTUAL MACHINE IDENTIFIER
|
||||
.PP
|
||||
The syntax of the \f[V]vmid\f[R] string corresponds to the syntax of a
|
||||
URI:
|
||||
.RS
|
||||
.PP
|
||||
[\f[I]protocol\f[R]\f[V]:\f[R]][\f[V]//\f[R]]\f[I]lvmid\f[R][\f[V]\[at]\f[R]\f[I]hostname\f[R][\f[V]:\f[R]\f[I]port\f[R]][\f[V]/\f[R]\f[I]servername\f[R]]
|
||||
.RE
|
||||
.PP
|
||||
The syntax of the \f[V]vmid\f[R] string corresponds to the syntax of a
|
||||
URI.
|
||||
The \f[V]vmid\f[R] string can vary from a simple integer that represents
|
||||
a local JVM to a more complex construction that specifies a
|
||||
communications protocol, port number, and other implementation-specific
|
||||
values.
|
||||
.TP
|
||||
\f[I]protocol\f[R]
|
||||
The communications protocol.
|
||||
If the \f[I]protocol\f[R] value is omitted and a host name isn\[aq]t
|
||||
specified, then the default protocol is a platform-specific optimized
|
||||
local protocol.
|
||||
If the \f[I]protocol\f[R] value is omitted and a host name is specified,
|
||||
then the default protocol is \f[V]rmi\f[R].
|
||||
.TP
|
||||
\f[I]lvmid\f[R]
|
||||
The local virtual machine identifier for the target JVM.
|
||||
The \f[I]lvmid\f[R] is a platform-specific value that uniquely
|
||||
identifies a JVM on a system.
|
||||
The \f[I]lvmid\f[R] is the only required component of a virtual machine
|
||||
identifier.
|
||||
The \f[I]lvmid\f[R] is typically, but not necessarily, the operating
|
||||
system\[aq]s process identifier for the target JVM process.
|
||||
You can use the \f[V]jps\f[R] command to determine the \f[I]lvmid\f[R]
|
||||
provided the JVM processes is not running in a separate docker instance.
|
||||
You can also determine the \f[I]lvmid\f[R] on Linux and macOS platforms
|
||||
with the \f[V]ps\f[R] command, and on Windows with the Windows Task
|
||||
Manager.
|
||||
.TP
|
||||
\f[I]hostname\f[R]
|
||||
A host name or IP address that indicates the target host.
|
||||
If the \f[I]hostname\f[R] value is omitted, then the target host is the
|
||||
local host.
|
||||
.TP
|
||||
\f[I]port\f[R]
|
||||
The default port for communicating with the remote server.
|
||||
If the \f[I]hostname\f[R] value is omitted or the \f[I]protocol\f[R]
|
||||
value specifies an optimized, local protocol, then the \f[I]port\f[R]
|
||||
value is ignored.
|
||||
Otherwise, treatment of the \f[I]port\f[R] parameter is
|
||||
implementation-specific.
|
||||
For the default \f[V]rmi\f[R] protocol, the port value indicates the
|
||||
port number for the \f[V]rmiregistry\f[R] on the remote host.
|
||||
If the \f[I]port\f[R] value is omitted and the \f[I]protocol\f[R] value
|
||||
indicates \f[V]rmi\f[R], then the default rmiregistry port (1099) is
|
||||
used.
|
||||
.TP
|
||||
\f[I]servername\f[R]
|
||||
The treatment of the \f[I]servername\f[R] parameter depends on
|
||||
implementation.
|
||||
For the optimized local protocol, this field is ignored.
|
||||
For the \f[V]rmi\f[R] protocol, it represents the name of the RMI remote
|
||||
object on the remote host.
|
||||
.SH EXAMPLES
|
||||
.PP
|
||||
This section presents some examples of monitoring a local JVM with an
|
||||
\f[I]lvmid\f[R] of 21891.
|
||||
.SH THE GCUTIL OPTION
|
||||
.PP
|
||||
This example attaches to lvmid 21891 and takes 7 samples at 250
|
||||
millisecond intervals and displays the output as specified by the
|
||||
\f[V]-gcutil\f[R] option.
|
||||
.PP
|
||||
The output of this example shows that a young generation collection
|
||||
occurred between the third and fourth sample.
|
||||
The collection took 0.078 seconds and promoted objects from the eden
|
||||
space (E) to the old space (O), resulting in an increase of old space
|
||||
utilization from 66.80% to 68.19%.
|
||||
Before the collection, the survivor space was 97.02% utilized, but after
|
||||
this collection it\[aq]s 91.03% utilized.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jstat -gcutil 21891 250 7
|
||||
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
|
||||
0.00 97.02 70.31 66.80 95.52 89.14 7 0.300 0 0.000 0.300
|
||||
0.00 97.02 86.23 66.80 95.52 89.14 7 0.300 0 0.000 0.300
|
||||
0.00 97.02 96.53 66.80 95.52 89.14 7 0.300 0 0.000 0.300
|
||||
91.03 0.00 1.98 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
91.03 0.00 15.82 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
\f[R]
|
||||
.fi
|
||||
.SH REPEAT THE COLUMN HEADER STRING
|
||||
.PP
|
||||
This example attaches to lvmid 21891 and takes samples at 250
|
||||
millisecond intervals and displays the output as specified by
|
||||
\f[V]-gcnew\f[R] option.
|
||||
In addition, it uses the \f[V]-h3\f[R] option to output the column
|
||||
header after every 3 lines of data.
|
||||
.PP
|
||||
In addition to showing the repeating header string, this example shows
|
||||
that between the second and third samples, a young GC occurred.
|
||||
Its duration was 0.001 seconds.
|
||||
The collection found enough active data that the survivor space 0
|
||||
utilization (S0U) would have exceeded the desired survivor size (DSS).
|
||||
As a result, objects were promoted to the old generation (not visible in
|
||||
this output), and the tenuring threshold (TT) was lowered from 31 to 2.
|
||||
.PP
|
||||
Another collection occurs between the fifth and sixth samples.
|
||||
This collection found very few survivors and returned the tenuring
|
||||
threshold to 31.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jstat -gcnew -h3 21891 250
|
||||
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
|
||||
64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203
|
||||
64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203
|
||||
64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204
|
||||
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
|
||||
64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204
|
||||
64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204
|
||||
64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204
|
||||
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
|
||||
64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204
|
||||
\f[R]
|
||||
.fi
|
||||
.SH INCLUDE A TIME STAMP FOR EACH SAMPLE
|
||||
.PP
|
||||
This example attaches to lvmid 21891 and takes 3 samples at 250
|
||||
millisecond intervals.
|
||||
The \f[V]-t\f[R] option is used to generate a time stamp for each sample
|
||||
in the first column.
|
||||
.PP
|
||||
The Timestamp column reports the elapsed time in seconds since the start
|
||||
of the target JVM.
|
||||
In addition, the \f[V]-gcoldcapacity\f[R] output shows the old
|
||||
generation capacity (OGC) and the old space capacity (OC) increasing as
|
||||
the heap expands to meet allocation or promotion demands.
|
||||
The old generation capacity (OGC) has grown from 11,696 KB to 13,820 KB
|
||||
after the eighty-first full garbage collection (FGC).
|
||||
The maximum capacity of the generation (and space) is 60,544 KB (OGCMX),
|
||||
so it still has room to expand.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT
|
||||
150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799
|
||||
150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
|
||||
150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
|
||||
\f[R]
|
||||
.fi
|
||||
.SH MONITOR INSTRUMENTATION FOR A REMOTE JVM
|
||||
.PP
|
||||
This example attaches to lvmid 40496 on the system named
|
||||
\f[V]remote.domain\f[R] using the \f[V]-gcutil\f[R] option, with samples
|
||||
taken every second indefinitely.
|
||||
.PP
|
||||
The lvmid is combined with the name of the remote host to construct a
|
||||
vmid of \f[V]40496\[at]remote.domain\f[R].
|
||||
This vmid results in the use of the \f[V]rmi\f[R] protocol to
|
||||
communicate to the default \f[V]jstatd\f[R] server on the remote host.
|
||||
The \f[V]jstatd\f[R] server is located using the \f[V]rmiregistry\f[R]
|
||||
command on \f[V]remote.domain\f[R] that\[aq]s bound to the default port
|
||||
of the \f[V]rmiregistry\f[R] command (port 1099).
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jstat -gcutil 40496\[at]remote.domain 1000
|
||||
\&... output omitted
|
||||
\f[R]
|
||||
.fi
|
588
src/jdk.jcmd/share/man/jstat.md
Normal file
588
src/jdk.jcmd/share/man/jstat.md
Normal file
@ -0,0 +1,588 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2023, 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.
|
||||
#
|
||||
|
||||
title: 'JSTAT(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jstat - monitor JVM statistics
|
||||
|
||||
## Synopsis
|
||||
|
||||
**Note:** This command is experimental and unsupported.
|
||||
|
||||
`jstat` *generalOptions*
|
||||
|
||||
`jstat` *outputOptions* \[`-t`\] \[`-h` *lines*\] *vmid* \[*interval*
|
||||
\[*count*\]\]
|
||||
|
||||
*generalOptions*
|
||||
: A single general command-line option. See [General Options].
|
||||
|
||||
*outputOptions*
|
||||
: An option reported by the `-options` option. One or more output options
|
||||
that consist of a single `statOption`, plus any of the `-t`, `-h`, and `-J`
|
||||
options. See [Output Options for the jstat Command].
|
||||
|
||||
`-t`
|
||||
: Displays a time-stamp column as the first column of output. The time stamp
|
||||
is the time since the start time of the target JVM.
|
||||
|
||||
`-h` *n*
|
||||
: Displays a column header every *n* samples (output rows), where *n* is a
|
||||
positive integer. The default value is `0`, which displays the column
|
||||
header of the first row of data.
|
||||
|
||||
*vmid*
|
||||
: A virtual machine identifier, which is a string that indicates the target
|
||||
JVM. See [Virtual Machine Identifier].
|
||||
|
||||
*interval*
|
||||
: The sampling interval in the specified units, seconds (s) or milliseconds
|
||||
(ms). Default units are milliseconds. This must be a positive integer. When
|
||||
specified, the `jstat` command produces its output at each interval.
|
||||
|
||||
*count*
|
||||
: The number of samples to display. The default value is infinity, which
|
||||
causes the `jstat` command to display statistics until the target JVM
|
||||
terminates or the `jstat` command is terminated. This value must be a
|
||||
positive integer.
|
||||
|
||||
## Description
|
||||
|
||||
The `jstat` command displays performance statistics for an instrumented Java
|
||||
HotSpot VM. The target JVM is identified by its virtual machine identifier, or
|
||||
`vmid` option.
|
||||
|
||||
The `jstat` command supports two types of options, general options and output
|
||||
options. General options cause the `jstat` command to display simple usage and
|
||||
version information. Output options determine the content and format of the
|
||||
statistical output.
|
||||
|
||||
All options and their functionality are subject to change or removal in future
|
||||
releases.
|
||||
|
||||
## General Options
|
||||
|
||||
If you specify one of the general options, then you can't specify any other
|
||||
option or parameter.
|
||||
|
||||
`-help`
|
||||
: Displays a help message.
|
||||
|
||||
`-options`
|
||||
: Displays a list of static options. See [Output Options for the jstat
|
||||
Command].
|
||||
|
||||
## Output Options for the jstat Command
|
||||
|
||||
If you don't specify a general option, then you can specify output options.
|
||||
Output options determine the content and format of the `jstat` command's
|
||||
output, and consist of a single `statOption`, plus any of the other output
|
||||
options (`-h`, `-t`, and `-J`). The `statOption` must come first.
|
||||
|
||||
Output is formatted as a table, with columns that are separated by spaces. A
|
||||
header row with titles describes the columns. Use the `-h` option to set the
|
||||
frequency at which the header is displayed. Column header names are consistent
|
||||
among the different options. In general, if two options provide a column with
|
||||
the same name, then the data source for the two columns is the same.
|
||||
|
||||
Use the `-t` option to display a time-stamp column, labeled Timestamp as the
|
||||
first column of output. The Timestamp column contains the elapsed time, in
|
||||
seconds, since the target JVM started. The resolution of the time stamp is
|
||||
dependent on various factors and is subject to variation due to delayed thread
|
||||
scheduling on heavily loaded systems.
|
||||
|
||||
Use the interval and count parameters to determine how frequently and how many
|
||||
times, respectively, the `jstat` command displays its output.
|
||||
|
||||
**Note:**
|
||||
|
||||
Don't write scripts to parse the `jstat` command's output because the format
|
||||
might change in future releases. If you write scripts that parse the `jstat`
|
||||
command output, then expect to modify them for future releases of this tool.
|
||||
|
||||
`-statOption`
|
||||
: Determines the statistics information that the `jstat` command displays.
|
||||
The following lists the available options. Use the `-options` general
|
||||
option to display the list of options for a particular platform
|
||||
installation. See [Stat Options and Output].
|
||||
|
||||
`class`: Displays statistics about the behavior of the class loader.
|
||||
|
||||
`compiler`: Displays statistics about the behavior of the Java HotSpot VM
|
||||
Just-in-Time compiler.
|
||||
|
||||
`gc`: Displays statistics about the behavior of the garbage collected heap.
|
||||
|
||||
`gccapacity`: Displays statistics about the capacities of the generations
|
||||
and their corresponding spaces.
|
||||
|
||||
`gccause`: Displays a summary about garbage collection statistics (same as
|
||||
`-gcutil`), with the cause of the last and current (when applicable)
|
||||
garbage collection events.
|
||||
|
||||
`gcnew`: Displays statistics about the behavior of the new generation.
|
||||
|
||||
`gcnewcapacity`: Displays statistics about the sizes of the new generations
|
||||
and their corresponding spaces.
|
||||
|
||||
`gcold`: Displays statistics about the behavior of the old generation and
|
||||
metaspace statistics.
|
||||
|
||||
`gcoldcapacity`: Displays statistics about the sizes of the old generation.
|
||||
|
||||
`gcmetacapacity`: Displays statistics about the sizes of the metaspace.
|
||||
|
||||
`gcutil`: Displays a summary about garbage collection statistics.
|
||||
|
||||
`printcompilation`: Displays Java HotSpot VM compilation method statistics.
|
||||
|
||||
`-J`*javaOption*
|
||||
: Passes *javaOption* to the Java application launcher. For example,
|
||||
`-J-Xms48m` sets the startup memory to 48 MB. For a complete list of
|
||||
options, see [java](java.html).
|
||||
|
||||
## Stat Options and Output
|
||||
|
||||
The following information summarizes the columns that the `jstat` command
|
||||
outputs for each *statOption*.
|
||||
|
||||
`-class` *option*
|
||||
: Class loader statistics.
|
||||
|
||||
`Loaded`: Number of classes loaded.
|
||||
|
||||
`Bytes`: Number of KB loaded.
|
||||
|
||||
`Unloaded`: Number of classes unloaded.
|
||||
|
||||
`Bytes`: Number of KB unloaded.
|
||||
|
||||
`Time`: Time spent performing class loading and unloading operations.
|
||||
|
||||
`-compiler` *option*
|
||||
: Java HotSpot VM Just-in-Time compiler statistics.
|
||||
|
||||
`Compiled`: Number of compilation tasks performed.
|
||||
|
||||
`Failed`: Number of compilations tasks failed.
|
||||
|
||||
`Invalid`: Number of compilation tasks that were invalidated.
|
||||
|
||||
`Time`: Time spent performing compilation tasks.
|
||||
|
||||
`FailedType`: Compile type of the last failed compilation.
|
||||
|
||||
`FailedMethod`: Class name and method of the last failed compilation.
|
||||
|
||||
`-gc` *option*
|
||||
: Garbage collected heap statistics.
|
||||
|
||||
`S0C`: Current survivor space 0 capacity (KB).
|
||||
|
||||
`S1C`: Current survivor space 1 capacity (KB).
|
||||
|
||||
`S0U`: Survivor space 0 utilization (KB).
|
||||
|
||||
`S1U`: Survivor space 1 utilization (KB).
|
||||
|
||||
`EC`: Current eden space capacity (KB).
|
||||
|
||||
`EU`: Eden space utilization (KB).
|
||||
|
||||
`OC`: Current old space capacity (KB).
|
||||
|
||||
`OU`: Old space utilization (KB).
|
||||
|
||||
`MC`: Metaspace Committed Size (KB).
|
||||
|
||||
`MU`: Metaspace utilization (KB).
|
||||
|
||||
`CCSC`: Compressed class committed size (KB).
|
||||
|
||||
`CCSU`: Compressed class space used (KB).
|
||||
|
||||
`YGC`: Number of young generation garbage collection (GC) events.
|
||||
|
||||
`YGCT`: Young generation garbage collection time.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`FGCT`: Full garbage collection time.
|
||||
|
||||
`GCT`: Total garbage collection time.
|
||||
|
||||
`-gccapacity` *option*
|
||||
: Memory pool generation and space capacities.
|
||||
|
||||
`NGCMN`: Minimum new generation capacity (KB).
|
||||
|
||||
`NGCMX`: Maximum new generation capacity (KB).
|
||||
|
||||
`NGC`: Current new generation capacity (KB).
|
||||
|
||||
`S0C`: Current survivor space 0 capacity (KB).
|
||||
|
||||
`S1C`: Current survivor space 1 capacity (KB).
|
||||
|
||||
`EC`: Current eden space capacity (KB).
|
||||
|
||||
`OGCMN`: Minimum old generation capacity (KB).
|
||||
|
||||
`OGCMX`: Maximum old generation capacity (KB).
|
||||
|
||||
`OGC`: Current old generation capacity (KB).
|
||||
|
||||
`OC`: Current old space capacity (KB).
|
||||
|
||||
`MCMN`: Minimum metaspace capacity (KB).
|
||||
|
||||
`MCMX`: Maximum metaspace capacity (KB).
|
||||
|
||||
`MC`: Metaspace Committed Size (KB).
|
||||
|
||||
`CCSMN`: Compressed class space minimum capacity (KB).
|
||||
|
||||
`CCSMX`: Compressed class space maximum capacity (KB).
|
||||
|
||||
`CCSC`: Compressed class committed size (KB).
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`-gccause` *option*
|
||||
: This option displays the same summary of garbage collection statistics as
|
||||
the `-gcutil` option, but includes the causes of the last garbage
|
||||
collection event and (when applicable), the current garbage collection
|
||||
event. In addition to the columns listed for `-gcutil`, this option adds
|
||||
the following columns:
|
||||
|
||||
`LGCC`: Cause of last garbage collection
|
||||
|
||||
`GCC`: Cause of current garbage collection
|
||||
|
||||
`-gcnew` *option*
|
||||
: New generation statistics.
|
||||
|
||||
`S0C`: Current survivor space 0 capacity (KB).
|
||||
|
||||
`S1C`: Current survivor space 1 capacity (KB).
|
||||
|
||||
`S0U`: Survivor space 0 utilization (KB).
|
||||
|
||||
`S1U`: Survivor space 1 utilization (KB).
|
||||
|
||||
`TT`: Tenuring threshold.
|
||||
|
||||
`MTT`: Maximum tenuring threshold.
|
||||
|
||||
`DSS`: Desired survivor size (KB).
|
||||
|
||||
`EC`: Current eden space capacity (KB).
|
||||
|
||||
`EU`: Eden space utilization (KB).
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`YGCT`: Young generation garbage collection time.
|
||||
|
||||
`-gcnewcapacity` *option*
|
||||
: New generation space size statistics.
|
||||
|
||||
`NGCMN`: Minimum new generation capacity (KB).
|
||||
|
||||
`NGCMX`: Maximum new generation capacity (KB).
|
||||
|
||||
`NGC`: Current new generation capacity (KB).
|
||||
|
||||
`S0CMX`: Maximum survivor space 0 capacity (KB).
|
||||
|
||||
`S0C`: Current survivor space 0 capacity (KB).
|
||||
|
||||
`S1CMX`: Maximum survivor space 1 capacity (KB).
|
||||
|
||||
`S1C`: Current survivor space 1 capacity (KB).
|
||||
|
||||
`ECMX`: Maximum eden space capacity (KB).
|
||||
|
||||
`EC`: Current eden space capacity (KB).
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`-gcold` *option*
|
||||
: Old generation size statistics.
|
||||
|
||||
`MC`: Metaspace Committed Size (KB).
|
||||
|
||||
`MU`: Metaspace utilization (KB).
|
||||
|
||||
`CCSC`: Compressed class committed size (KB).
|
||||
|
||||
`CCSU`: Compressed class space used (KB).
|
||||
|
||||
`OC`: Current old space capacity (KB).
|
||||
|
||||
`OU`: Old space utilization (KB).
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`FGCT`: Full garbage collection time.
|
||||
|
||||
`GCT`: Total garbage collection time.
|
||||
|
||||
`-gcoldcapacity` *option*
|
||||
: Old generation statistics.
|
||||
|
||||
`OGCMN`: Minimum old generation capacity (KB).
|
||||
|
||||
`OGCMX`: Maximum old generation capacity (KB).
|
||||
|
||||
`OGC`: Current old generation capacity (KB).
|
||||
|
||||
`OC`: Current old space capacity (KB).
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`FGCT`: Full garbage collection time.
|
||||
|
||||
`GCT`: Total garbage collection time.
|
||||
|
||||
`-gcmetacapacity` *option*
|
||||
: Metaspace size statistics.
|
||||
|
||||
`MCMN`: Minimum metaspace capacity (KB).
|
||||
|
||||
`MCMX`: Maximum metaspace capacity (KB).
|
||||
|
||||
`MC`: Metaspace Committed Size (KB).
|
||||
|
||||
`CCSMN`: Compressed class space minimum capacity (KB).
|
||||
|
||||
`CCSMX`: Compressed class space maximum capacity (KB).
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`FGCT`: Full garbage collection time.
|
||||
|
||||
`GCT`: Total garbage collection time.
|
||||
|
||||
`-gcutil` *option*
|
||||
: Summary of garbage collection statistics.
|
||||
|
||||
`S0`: Survivor space 0 utilization as a percentage of the space's current
|
||||
capacity.
|
||||
|
||||
`S1`: Survivor space 1 utilization as a percentage of the space's current
|
||||
capacity.
|
||||
|
||||
`E`: Eden space utilization as a percentage of the space's current
|
||||
capacity.
|
||||
|
||||
`O`: Old space utilization as a percentage of the space's current capacity.
|
||||
|
||||
`M`: Metaspace utilization as a percentage of the space's current capacity.
|
||||
|
||||
`CCS`: Compressed class space utilization as a percentage.
|
||||
|
||||
`YGC`: Number of young generation GC events.
|
||||
|
||||
`YGCT`: Young generation garbage collection time.
|
||||
|
||||
`FGC`: Number of full GC events.
|
||||
|
||||
`FGCT`: Full garbage collection time.
|
||||
|
||||
`GCT`: Total garbage collection time.
|
||||
|
||||
`-printcompilation` *option*
|
||||
: Java HotSpot VM compiler method statistics.
|
||||
|
||||
`Compiled`: Number of compilation tasks performed by the most recently
|
||||
compiled method.
|
||||
|
||||
`Size`: Number of bytes of byte code of the most recently compiled method.
|
||||
|
||||
`Type`: Compilation type of the most recently compiled method.
|
||||
|
||||
`Method`: Class name and method name identifying the most recently compiled
|
||||
method. Class name uses a slash (/) instead of a dot (.) as a name space
|
||||
separator. The method name is the method within the specified class. The
|
||||
format for these two fields is consistent with the HotSpot
|
||||
`-XX:+PrintCompilation` option.
|
||||
|
||||
## Virtual Machine Identifier
|
||||
|
||||
The syntax of the `vmid` string corresponds to the syntax of a URI:
|
||||
|
||||
> \[*protocol*`:`\]\[`//`\]*lvmid*\[`@`*hostname*\[`:`*port*\]\[`/`*servername*\]
|
||||
|
||||
The syntax of the `vmid` string corresponds to the syntax of a URI. The `vmid`
|
||||
string can vary from a simple integer that represents a local JVM to a more
|
||||
complex construction that specifies a communications protocol, port number, and
|
||||
other implementation-specific values.
|
||||
|
||||
*protocol*
|
||||
: The communications protocol. If the *protocol* value is omitted and a host
|
||||
name isn't specified, then the default protocol is a platform-specific
|
||||
optimized local protocol. If the *protocol* value is omitted and a host
|
||||
name is specified, then the default protocol is `rmi`.
|
||||
|
||||
*lvmid*
|
||||
: The local virtual machine identifier for the target JVM. The *lvmid* is a
|
||||
platform-specific value that uniquely identifies a JVM on a system. The
|
||||
*lvmid* is the only required component of a virtual machine identifier. The
|
||||
*lvmid* is typically, but not necessarily, the operating system's process
|
||||
identifier for the target JVM process. You can use the `jps` command to
|
||||
determine the *lvmid* provided the JVM processes is not running in a
|
||||
separate docker instance. You can also determine the *lvmid* on Linux and
|
||||
macOS platforms with the `ps` command, and on Windows with the Windows Task
|
||||
Manager.
|
||||
|
||||
*hostname*
|
||||
: A host name or IP address that indicates the target host. If the *hostname*
|
||||
value is omitted, then the target host is the local host.
|
||||
|
||||
*port*
|
||||
: The default port for communicating with the remote server. If the
|
||||
*hostname* value is omitted or the *protocol* value specifies an optimized,
|
||||
local protocol, then the *port* value is ignored. Otherwise, treatment of
|
||||
the *port* parameter is implementation-specific. For the default `rmi`
|
||||
protocol, the port value indicates the port number for the `rmiregistry` on
|
||||
the remote host. If the *port* value is omitted and the *protocol* value
|
||||
indicates `rmi`, then the default rmiregistry port (1099) is used.
|
||||
|
||||
*servername*
|
||||
: The treatment of the *servername* parameter depends on implementation. For
|
||||
the optimized local protocol, this field is ignored. For the `rmi`
|
||||
protocol, it represents the name of the RMI remote object on the remote
|
||||
host.
|
||||
|
||||
## Examples
|
||||
|
||||
This section presents some examples of monitoring a local JVM with an *lvmid*
|
||||
of 21891.
|
||||
|
||||
## The gcutil Option
|
||||
|
||||
This example attaches to lvmid 21891 and takes 7 samples at 250 millisecond
|
||||
intervals and displays the output as specified by the `-gcutil` option.
|
||||
|
||||
The output of this example shows that a young generation collection occurred
|
||||
between the third and fourth sample. The collection took 0.078 seconds and
|
||||
promoted objects from the eden space (E) to the old space (O), resulting in an
|
||||
increase of old space utilization from 66.80% to 68.19%. Before the collection,
|
||||
the survivor space was 97.02% utilized, but after this collection it's 91.03%
|
||||
utilized.
|
||||
|
||||
```
|
||||
jstat -gcutil 21891 250 7
|
||||
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
|
||||
0.00 97.02 70.31 66.80 95.52 89.14 7 0.300 0 0.000 0.300
|
||||
0.00 97.02 86.23 66.80 95.52 89.14 7 0.300 0 0.000 0.300
|
||||
0.00 97.02 96.53 66.80 95.52 89.14 7 0.300 0 0.000 0.300
|
||||
91.03 0.00 1.98 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
91.03 0.00 15.82 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
|
||||
```
|
||||
|
||||
## Repeat the Column Header String
|
||||
|
||||
This example attaches to lvmid 21891 and takes samples at 250 millisecond
|
||||
intervals and displays the output as specified by `-gcnew` option. In addition,
|
||||
it uses the `-h3` option to output the column header after every 3 lines of
|
||||
data.
|
||||
|
||||
In addition to showing the repeating header string, this example shows that
|
||||
between the second and third samples, a young GC occurred. Its duration was
|
||||
0.001 seconds. The collection found enough active data that the survivor space
|
||||
0 utilization (S0U) would have exceeded the desired survivor size (DSS). As a
|
||||
result, objects were promoted to the old generation (not visible in this
|
||||
output), and the tenuring threshold (TT) was lowered from 31 to 2.
|
||||
|
||||
Another collection occurs between the fifth and sixth samples. This collection
|
||||
found very few survivors and returned the tenuring threshold to 31.
|
||||
|
||||
```
|
||||
jstat -gcnew -h3 21891 250
|
||||
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
|
||||
64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203
|
||||
64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203
|
||||
64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204
|
||||
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
|
||||
64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204
|
||||
64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204
|
||||
64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204
|
||||
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
|
||||
64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204
|
||||
```
|
||||
|
||||
## Include a Time Stamp for Each Sample
|
||||
|
||||
This example attaches to lvmid 21891 and takes 3 samples at 250 millisecond
|
||||
intervals. The `-t` option is used to generate a time stamp for each sample in
|
||||
the first column.
|
||||
|
||||
The Timestamp column reports the elapsed time in seconds since the start of the
|
||||
target JVM. In addition, the `-gcoldcapacity` output shows the old generation
|
||||
capacity (OGC) and the old space capacity (OC) increasing as the heap expands
|
||||
to meet allocation or promotion demands. The old generation capacity (OGC) has
|
||||
grown from 11,696 KB to 13,820 KB after the eighty-first full garbage
|
||||
collection (FGC). The maximum capacity of the generation (and space) is 60,544
|
||||
KB (OGCMX), so it still has room to expand.
|
||||
|
||||
```
|
||||
Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT
|
||||
150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799
|
||||
150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
|
||||
150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
|
||||
```
|
||||
|
||||
## Monitor Instrumentation for a Remote JVM
|
||||
|
||||
This example attaches to lvmid 40496 on the system named `remote.domain` using
|
||||
the `-gcutil` option, with samples taken every second indefinitely.
|
||||
|
||||
The lvmid is combined with the name of the remote host to construct a vmid of
|
||||
`40496@remote.domain`. This vmid results in the use of the `rmi` protocol to
|
||||
communicate to the default `jstatd` server on the remote host. The `jstatd`
|
||||
server is located using the `rmiregistry` command on `remote.domain` that's
|
||||
bound to the default port of the `rmiregistry` command (port 1099).
|
||||
|
||||
```
|
||||
jstat -gcutil 40496@remote.domain 1000
|
||||
... output omitted
|
||||
```
|
@ -1,104 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2018, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JCONSOLE" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jconsole - start a graphical console to monitor and manage Java
|
||||
applications
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jconsole\f[R] [\f[V]-interval=\f[R]\f[I]n\f[R]] [\f[V]-notile\f[R]]
|
||||
[\f[V]-plugin\f[R] \f[I]path\f[R]] [\f[V]-version\f[R]]
|
||||
[\f[I]connection\f[R] ...
|
||||
] [\f[V]-J\f[R]\f[I]input_arguments\f[R]]
|
||||
.PP
|
||||
\f[V]jconsole\f[R] \f[V]-help\f[R]
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\f[V]-interval\f[R]
|
||||
Sets the update interval to \f[V]n\f[R] seconds (default is 4 seconds).
|
||||
.TP
|
||||
\f[V]-notile\f[R]
|
||||
Doesn\[aq]t tile the windows for two or more connections.
|
||||
.TP
|
||||
\f[V]-pluginpath\f[R] \f[I]path\f[R]
|
||||
Specifies the path that \f[V]jconsole\f[R] uses to look up plug-ins.
|
||||
The plug-in \f[I]path\f[R] should contain a provider-configuration file
|
||||
named \f[V]META-INF/services/com.sun.tools.jconsole.JConsolePlugin\f[R]
|
||||
that contains one line for each plug-in.
|
||||
The line specifies the fully qualified class name of the class
|
||||
implementing the \f[V]com.sun.tools.jconsole.JConsolePlugin\f[R] class.
|
||||
.TP
|
||||
\f[V]-version\f[R]
|
||||
Prints the program version.
|
||||
.TP
|
||||
\f[I]connection\f[R] = \f[I]pid\f[R] | \f[I]host\f[R]\f[V]:\f[R]\f[I]port\f[R] | \f[I]jmxURL\f[R]
|
||||
A connection is described by either \f[I]pid\f[R],
|
||||
\f[I]host\f[R]\f[V]:\f[R]\f[I]port\f[R] or \f[I]jmxURL\f[R].
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
The \f[I]pid\f[R] value is the process ID of a target process.
|
||||
The JVM must be running with the same user ID as the user ID running the
|
||||
\f[V]jconsole\f[R] command.
|
||||
.IP \[bu] 2
|
||||
The \f[I]host\f[R]\f[V]:\f[R]\f[I]port\f[R] values are the name of the
|
||||
host system on which the JVM is running, and the port number specified
|
||||
by the system property \f[V]com.sun.management.jmxremote.port\f[R] when
|
||||
the JVM was started.
|
||||
.IP \[bu] 2
|
||||
The \f[I]jmxUrl\f[R] value is the address of the JMX agent to be
|
||||
connected to as described in JMXServiceURL.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]input_arguments\f[R]
|
||||
Passes \f[I]input_arguments\f[R] to the JVM on which the
|
||||
\f[V]jconsole\f[R] command is run.
|
||||
.TP
|
||||
\f[V]-help\f[R] or \f[V]--help\f[R]
|
||||
Displays the help message for the command.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jconsole\f[R] command starts a graphical console tool that lets
|
||||
you monitor and manage Java applications and virtual machines on a local
|
||||
or remote machine.
|
||||
.PP
|
||||
On Windows, the \f[V]jconsole\f[R] command doesn\[aq]t associate with a
|
||||
console window.
|
||||
It does, however, display a dialog box with error information when the
|
||||
\f[V]jconsole\f[R] command fails.
|
86
src/jdk.jconsole/share/man/jconsole.md
Normal file
86
src/jdk.jconsole/share/man/jconsole.md
Normal file
@ -0,0 +1,86 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2018, 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.
|
||||
#
|
||||
|
||||
title: 'JCONSOLE(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jconsole - start a graphical console to monitor and manage Java applications
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jconsole` \[`-interval=`*n*\] \[`-notile`\] \[`-plugin` *path*\]
|
||||
\[`-version`\] \[*connection* ... \] \[`-J`*input\_arguments*\]
|
||||
|
||||
`jconsole` `-help`
|
||||
|
||||
## Options
|
||||
|
||||
`-interval`
|
||||
: Sets the update interval to `n` seconds (default is 4 seconds).
|
||||
|
||||
`-notile`
|
||||
: Doesn't tile the windows for two or more connections.
|
||||
|
||||
`-pluginpath` *path*
|
||||
: Specifies the path that `jconsole` uses to look up plug-ins. The plug-in
|
||||
*path* should contain a provider-configuration file named
|
||||
`META-INF/services/com.sun.tools.jconsole.JConsolePlugin` that contains one
|
||||
line for each plug-in. The line specifies the fully qualified class name of
|
||||
the class implementing the `com.sun.tools.jconsole.JConsolePlugin` class.
|
||||
|
||||
`-version`
|
||||
: Prints the program version.
|
||||
|
||||
*connection* = *pid* \| *host*`:`*port* \| *jmxURL*
|
||||
: A connection is described by either *pid*, *host*`:`*port* or *jmxURL*.
|
||||
|
||||
- The *pid* value is the process ID of a target process. The JVM must be
|
||||
running with the same user ID as the user ID running the `jconsole`
|
||||
command.
|
||||
|
||||
- The *host*`:`*port* values are the name of the host system on which the
|
||||
JVM is running, and the port number specified by the system property
|
||||
`com.sun.management.jmxremote.port` when the JVM was started.
|
||||
|
||||
- The *jmxUrl* value is the address of the JMX agent to be connected to
|
||||
as described in JMXServiceURL.
|
||||
|
||||
`-J`*input\_arguments*
|
||||
: Passes *input\_arguments* to the JVM on which the `jconsole` command is
|
||||
run.
|
||||
|
||||
`-help` or `--help`
|
||||
: Displays the help message for the command.
|
||||
|
||||
## Description
|
||||
|
||||
The `jconsole` command starts a graphical console tool that lets you monitor
|
||||
and manage Java applications and virtual machines on a local or remote machine.
|
||||
|
||||
On Windows, the `jconsole` command doesn't associate with a console window. It
|
||||
does, however, display a dialog box with error information when the `jconsole`
|
||||
command fails.
|
@ -1,259 +0,0 @@
|
||||
.\" Copyright (c) 1994, 2020, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JAVAP" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
javap - disassemble one or more class files
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]javap\f[R] [\f[I]options\f[R]] \f[I]classes\f[R]...
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
Specifies the command-line options.
|
||||
See \f[B]Options for javap\f[R].
|
||||
.TP
|
||||
\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[V]path/to/MyClass.class\f[R]
|
||||
.RE
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class\f[R]
|
||||
.RE
|
||||
.RS
|
||||
.PP
|
||||
\f[V]java.lang.Object\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]javap\f[R] command disassembles one or more class files.
|
||||
The output depends on the options used.
|
||||
When no options are used, the \f[V]javap\f[R] command prints the
|
||||
protected and public fields, and methods of the classes passed to it.
|
||||
.PP
|
||||
The \f[V]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[V]javap\f[R] command prints its output to \f[V]stdout\f[R].
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
In tools that support \f[V]--\f[R] style options, the GNU-style options
|
||||
can use the equal sign (\f[V]=\f[R]) instead of a white space to
|
||||
separate the name of an option from its value.
|
||||
.SH OPTIONS FOR JAVAP
|
||||
.TP
|
||||
\f[V]--help\f[R], \f[V]-help\f[R] , \f[V]-h\f[R], or \f[V]-?\f[R]
|
||||
Prints a help message for the \f[V]javap\f[R] command.
|
||||
.TP
|
||||
\f[V]-version\f[R]
|
||||
Prints release information.
|
||||
.TP
|
||||
\f[V]-verbose\f[R] or \f[V]-v\f[R]
|
||||
Prints additional information about the selected class.
|
||||
.TP
|
||||
\f[V]-l\f[R]
|
||||
Prints line and local variable tables.
|
||||
.TP
|
||||
\f[V]-public\f[R]
|
||||
Shows only public classes and members.
|
||||
.TP
|
||||
\f[V]-protected\f[R]
|
||||
Shows only protected and public classes and members.
|
||||
.TP
|
||||
\f[V]-package\f[R]
|
||||
Shows package/protected/public classes and members (default).
|
||||
.TP
|
||||
\f[V]-private\f[R] or \f[V]-p\f[R]
|
||||
Shows all classes and members.
|
||||
.TP
|
||||
\f[V]-c\f[R]
|
||||
Prints disassembled code, for example, the instructions that comprise
|
||||
the Java bytecodes, for each of the methods in the class.
|
||||
.TP
|
||||
\f[V]-s\f[R]
|
||||
Prints internal type signatures.
|
||||
.TP
|
||||
\f[V]-sysinfo\f[R]
|
||||
Shows system information (path, size, date, SHA-256 hash) of the class
|
||||
being processed.
|
||||
.TP
|
||||
\f[V]-verify\f[R]
|
||||
Prints additional class verification info.
|
||||
.TP
|
||||
\f[V]-constants\f[R]
|
||||
Shows \f[V]static final\f[R] constants.
|
||||
.TP
|
||||
\f[V]--module\f[R] \f[I]module\f[R] or \f[V]-m\f[R] \f[I]module\f[R]
|
||||
Specifies the module containing classes to be disassembled.
|
||||
.TP
|
||||
\f[V]--module-path\f[R] \f[I]path\f[R]
|
||||
Specifies where to find application modules.
|
||||
.TP
|
||||
\f[V]--system\f[R] \f[I]jdk\f[R]
|
||||
Specifies where to find system modules.
|
||||
.TP
|
||||
\f[V]--class-path\f[R] \f[I]path\f[R], \f[V]-classpath\f[R] \f[I]path\f[R], or \f[V]-cp\f[R] \f[I]path\f[R]
|
||||
Specifies the path that the \f[V]javap\f[R] command uses to find user
|
||||
class files.
|
||||
It overrides the default or the \f[V]CLASSPATH\f[R] environment variable
|
||||
when it\[aq]s set.
|
||||
.TP
|
||||
\f[V]-bootclasspath\f[R] \f[I]path\f[R]
|
||||
Overrides the location of bootstrap class files.
|
||||
.TP
|
||||
\f[V]--multi-release\f[R] \f[I]version\f[R]
|
||||
Specifies the version to select in multi-release JAR files.
|
||||
.TP
|
||||
\f[V]-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[V]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 = \[dq]Hello World!\[dq];
|
||||
|
||||
public HelloWorldFrame(){
|
||||
setContentPane(new JPanel(){
|
||||
\[at]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[V]javap HelloWorldFrame.class\f[R] command yields
|
||||
the following:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Compiled from \[dq]HelloWorldFrame.java\[dq]
|
||||
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[V]javap -c HelloWorldFrame.class\f[R] command
|
||||
yields the following:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Compiled from \[dq]HelloWorldFrame.java\[dq]
|
||||
public class HelloWorldFrame extends javax.swing.JFrame {
|
||||
java.lang.String message;
|
||||
|
||||
public HelloWorldFrame();
|
||||
Code:
|
||||
0: aload_0
|
||||
1: invokespecial #1 // Method javax/swing/JFrame.\[dq]<init>\[dq]:()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.\[dq]<init>\[dq]:(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 \[dq]<init>\[dq]:()V
|
||||
7: astore_1
|
||||
8: aload_1
|
||||
9: iconst_1
|
||||
10: invokevirtual #10 // Method setVisible:(Z)V
|
||||
13: return
|
||||
}
|
||||
\f[R]
|
||||
.fi
|
227
src/jdk.jdeps/share/man/javap.md
Normal file
227
src/jdk.jdeps/share/man/javap.md
Normal file
@ -0,0 +1,227 @@
|
||||
---
|
||||
# Copyright (c) 1994, 2020, 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.
|
||||
#
|
||||
|
||||
title: 'JAVAP(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
javap - disassemble one or more class files
|
||||
|
||||
## Synopsis
|
||||
|
||||
`javap` \[*options*\] *classes*...
|
||||
|
||||
*options*
|
||||
: Specifies the command-line options. See [Options for javap].
|
||||
|
||||
*classes*
|
||||
: 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.
|
||||
|
||||
Examples:
|
||||
|
||||
> `path/to/MyClass.class`
|
||||
|
||||
> `jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class`
|
||||
|
||||
> `java.lang.Object`
|
||||
|
||||
## Description
|
||||
|
||||
The `javap` command disassembles one or more class files. The output depends on
|
||||
the options used. When no options are used, the `javap` command prints the
|
||||
protected and public fields, and methods of the classes passed to it.
|
||||
|
||||
The `javap` command isn'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.
|
||||
|
||||
The `javap` command prints its output to `stdout`.
|
||||
|
||||
**Note:**
|
||||
|
||||
In tools that support `--` style options, the GNU-style options can use the
|
||||
equal sign (`=`) instead of a white space to separate the name of an option
|
||||
from its value.
|
||||
|
||||
## Options for javap
|
||||
|
||||
`--help`, `-help` , `-h`, or `-?`
|
||||
: Prints a help message for the `javap` command.
|
||||
|
||||
`-version`
|
||||
: Prints release information.
|
||||
|
||||
`-verbose` or `-v`
|
||||
: Prints additional information about the selected class.
|
||||
|
||||
`-l`
|
||||
: Prints line and local variable tables.
|
||||
|
||||
`-public`
|
||||
: Shows only public classes and members.
|
||||
|
||||
`-protected`
|
||||
: Shows only protected and public classes and members.
|
||||
|
||||
`-package`
|
||||
: Shows package/protected/public classes and members (default).
|
||||
|
||||
`-private` or `-p`
|
||||
: Shows all classes and members.
|
||||
|
||||
`-c`
|
||||
: Prints disassembled code, for example, the instructions that comprise the
|
||||
Java bytecodes, for each of the methods in the class.
|
||||
|
||||
`-s`
|
||||
: Prints internal type signatures.
|
||||
|
||||
`-sysinfo`
|
||||
: Shows system information (path, size, date, SHA-256 hash) of the class being
|
||||
processed.
|
||||
|
||||
`-verify`
|
||||
: Prints additional class verification info.
|
||||
|
||||
`-constants`
|
||||
: Shows `static final` constants.
|
||||
|
||||
`--module` *module* or `-m` *module*
|
||||
: Specifies the module containing classes to be disassembled.
|
||||
|
||||
`--module-path` *path*
|
||||
: Specifies where to find application modules.
|
||||
|
||||
`--system` *jdk*
|
||||
: Specifies where to find system modules.
|
||||
|
||||
`--class-path` *path*, `-classpath` *path*, or `-cp` *path*
|
||||
: Specifies the path that the `javap` command uses to find user class files.
|
||||
It overrides the default or the `CLASSPATH` environment variable when it's
|
||||
set.
|
||||
|
||||
`-bootclasspath` *path*
|
||||
: Overrides the location of bootstrap class files.
|
||||
|
||||
`--multi-release` *version*
|
||||
: Specifies the version to select in multi-release JAR files.
|
||||
|
||||
`-J`*option*
|
||||
: Passes the specified option to the JVM. For example:
|
||||
|
||||
```
|
||||
javap -J-version
|
||||
|
||||
javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName
|
||||
```
|
||||
|
||||
See *Overview of Java Options* in [java](java.html).
|
||||
|
||||
## javap Example
|
||||
|
||||
Compile the following `HelloWorldFrame` class:
|
||||
|
||||
```
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
The output from the `javap HelloWorldFrame.class` command yields the following:
|
||||
|
||||
```
|
||||
Compiled from "HelloWorldFrame.java"
|
||||
public class HelloWorldFrame extends javax.swing.JFrame {
|
||||
java.lang.String message;
|
||||
public HelloWorldFrame();
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
```
|
||||
|
||||
The output from the `javap -c HelloWorldFrame.class` command yields the
|
||||
following:
|
||||
|
||||
```
|
||||
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
|
||||
}
|
||||
```
|
@ -1,271 +0,0 @@
|
||||
.\" Copyright (c) 2017, 2023, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JDEPRSCAN" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jdeprscan - static analysis tool that scans a jar file (or some other
|
||||
aggregation of class files) for uses of deprecated API elements
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jdeprscan\f[R] [\f[I]options\f[R]]
|
||||
{\f[I]dir\f[R]|\f[I]jar\f[R]|\f[I]class\f[R]}
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
See \f[B]Options for the jdeprscan Command\f[R]
|
||||
.TP
|
||||
\f[I]dir\f[R]|\f[I]jar\f[R]|\f[I]class\f[R]
|
||||
\f[V]jdeprscan\f[R] command scans each argument for usages of deprecated
|
||||
APIs.
|
||||
The arguments can be a:
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
\f[I]dir\f[R]: Directory
|
||||
.IP \[bu] 2
|
||||
\f[I]jar\f[R]: JAR file
|
||||
.IP \[bu] 2
|
||||
\f[I]class\f[R]: Class name or class file
|
||||
.PP
|
||||
The class name should use a dot (\f[V].\f[R]) as a separator.
|
||||
For example:
|
||||
.PP
|
||||
\f[V]java.lang.Thread\f[R]
|
||||
.PP
|
||||
For nested classes, the dollar sign \f[V]$\f[R] separator character
|
||||
should be used.
|
||||
For example:
|
||||
.PP
|
||||
\f[V]java.lang.Thread$State\f[R]
|
||||
.PP
|
||||
A class file can also be named.
|
||||
For example:
|
||||
.PP
|
||||
\f[V]build/classes/java/lang/Thread$State.class\f[R]
|
||||
.RE
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jdeprscan\f[R] tool is a static analysis tool provided by the
|
||||
JDK that scans a JAR file or some other aggregation of class files for
|
||||
uses of deprecated API elements.
|
||||
The deprecated APIs identified by the \f[V]jdeprscan\f[R] tool are only
|
||||
those that are defined by Java SE.
|
||||
Deprecated APIs defined by third-party libraries aren\[aq]t reported.
|
||||
.PP
|
||||
To scan a JAR file or a set of class files, you must first ensure that
|
||||
all of the classes that the scanned classes depend upon are present in
|
||||
the class path.
|
||||
Set the class path using the \f[V]--class-path\f[R] option described in
|
||||
\f[B]Options for the jdeprscan Command\f[R].
|
||||
Typically, you would use the same class path as the one that you use
|
||||
when invoking your application.
|
||||
.PP
|
||||
If the \f[V]jdeprscan\f[R] can\[aq]t find all the dependent classes, it
|
||||
will generate an error message for each class that\[aq]s missing.
|
||||
These error messages are typically of the form:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]error: cannot find class ...\f[R]
|
||||
.RE
|
||||
.PP
|
||||
If these errors occur, then you must adjust the class path so that it
|
||||
includes all dependent classes.
|
||||
.SH OPTIONS FOR THE JDEPRSCAN COMMAND
|
||||
.PP
|
||||
The following options are available:
|
||||
.TP
|
||||
\f[V]--class-path\f[R] \f[I]path\f[R]
|
||||
Provides a search path for resolution of dependent classes.
|
||||
.RS
|
||||
.PP
|
||||
\f[I]path\f[R] can be a search path that consists of one or more
|
||||
directories separated by the system-specific path separator.
|
||||
For example:
|
||||
.IP \[bu] 2
|
||||
\f[B]Linux and macOS:\f[R]
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]--class-path /some/directory:/another/different/dir\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
On Windows, use a semicolon (\f[V];\f[R]) as the separator instead of a
|
||||
colon (\f[V]:\f[R]).
|
||||
.IP \[bu] 2
|
||||
\f[B]Windows:\f[R]
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]--class-path \[rs]some\[rs]directory;\[rs]another\[rs]different\[rs]dir\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--for-removal\f[R]
|
||||
Limits scanning or listing to APIs that are deprecated for removal.
|
||||
Can\[aq]t be used with a release value of 6, 7, or 8.
|
||||
.TP
|
||||
\f[V]--full-version\f[R]
|
||||
Prints out the full version string of the tool.
|
||||
.TP
|
||||
\f[V]--help\f[R] or \f[V]-h\f[R]
|
||||
Prints out a full help message.
|
||||
.TP
|
||||
\f[V]--list\f[R] or \f[V]-l\f[R]
|
||||
Prints the set of deprecated APIs.
|
||||
No scanning is done, so no directory, jar, or class arguments should be
|
||||
provided.
|
||||
.TP
|
||||
\f[V]--release\f[R] \f[V]6\f[R]|\f[V]7\f[R]|\f[V]8\f[R]|\f[V]9\f[R]
|
||||
Specifies the Java SE release that provides the set of deprecated APIs
|
||||
for scanning.
|
||||
.TP
|
||||
\f[V]--verbose\f[R] or \f[V]-v\f[R]
|
||||
Enables additional message output during processing.
|
||||
.TP
|
||||
\f[V]--version\f[R]
|
||||
Prints out the abbreviated version string of the tool.
|
||||
.SH EXAMPLE OF JDEPRSCAN OUTPUT
|
||||
.PP
|
||||
The JAR file for this library will be named something similar to
|
||||
\f[V]commons-math3-3.6.1.jar\f[R].
|
||||
To scan this JAR file for the use of deprecated APIs, run the following
|
||||
command:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jdeprscan commons-math3-3.6.1.jar\f[R]
|
||||
.RE
|
||||
.PP
|
||||
This command produces several lines of output.
|
||||
For example, one line of output might be:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
class org/apache/commons/math3/util/MathUtils uses deprecated method java/lang/Double::<init>(D)V
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
The class name is specified using the slash-separated binary name as
|
||||
described in JVMS 4.2.1.
|
||||
This is the form used internally in class files.
|
||||
.PP
|
||||
The deprecated API it uses is a method on the \f[V]java.lang.Double\f[R]
|
||||
class.
|
||||
.PP
|
||||
The name of the deprecated method is \f[V]<init>\f[R], which is a
|
||||
special name that means that the method is actually a constructor.
|
||||
Another special name is \f[V]<clinit>\f[R], which indicates a class
|
||||
static initializer.
|
||||
.PP
|
||||
Other methods are listed just by their method name.
|
||||
Following the method name is the argument list and return type:
|
||||
.RS
|
||||
.PP
|
||||
\f[V](D)V\f[R]
|
||||
.RE
|
||||
.PP
|
||||
This indicates that it takes just one double value (a primitive) and
|
||||
returns void.
|
||||
The argument and return types can become cryptic.
|
||||
For example, another line of output might be:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
class org/apache/commons/math3/util/Precision uses deprecated method java/math/BigDecimal::setScale(II)Ljava/math/BigDecimal;
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
In this line of output, the deprecated method is on class
|
||||
\f[V]java.math.BigDecimal\f[R], and the method is \f[V]setScale()\f[R].
|
||||
In this case, the \f[V](II)\f[R] means that it takes two \f[V]int\f[R]
|
||||
arguments.
|
||||
The \f[V]Ljava/math/BigDecimal;\f[R] after the parentheses means that it
|
||||
returns a reference to \f[V]java.math.BigDecimal\f[R].
|
||||
.SH JDEPRSCAN ANALYSIS CAN BE VERSION-SPECIFIC
|
||||
.PP
|
||||
You can use \f[V]jdeprscan\f[R] relative to the previous three JDK
|
||||
releases.
|
||||
For example, if you are running JDK 9, then you can check against JDK 8,
|
||||
7, and 6.
|
||||
.PP
|
||||
As an example, look at this code snippet:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
public class Deprecations {
|
||||
SecurityManager sm = new RMISecurityManager(); // deprecated in 8
|
||||
Boolean b2 = new Boolean(true); // deprecated in 9
|
||||
}
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The complete class compiles without warnings in JDK 7.
|
||||
.PP
|
||||
If you run \f[V]jdeprscan\f[R] on a system with JDK 9, then you see:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jdeprscan --class-path classes --release 7 example.Deprecations
|
||||
(no output)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Run \f[V]jdeprscan\f[R] with a release value of 8:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jdeprscan --class-path classes --release 8 example.Deprecations
|
||||
class example/Deprecations uses type java/rmi/RMISecurityManager deprecated
|
||||
class example/Deprecations uses method in type java/rmi/RMISecurityManager deprecated
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Run \f[V]jdeprscan\f[R] on JDK 9:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jdeprscan --class-path classes example.Deprecations
|
||||
class example/Deprecations uses type java/rmi/RMISecurityManager deprecated
|
||||
class example/Deprecations uses method in type java/rmi/RMISecurityManager deprecated
|
||||
class example/Deprecations uses method java/lang/Boolean <init> (Z)V deprecated
|
||||
\f[R]
|
||||
.fi
|
217
src/jdk.jdeps/share/man/jdeprscan.md
Normal file
217
src/jdk.jdeps/share/man/jdeprscan.md
Normal file
@ -0,0 +1,217 @@
|
||||
---
|
||||
# Copyright (c) 2017, 2023, 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.
|
||||
#
|
||||
|
||||
title: 'JDEPRSCAN(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jdeprscan - static analysis tool that scans a jar file (or some other
|
||||
aggregation of class files) for uses of deprecated API elements
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jdeprscan` \[*options*\] {*dir*\|*jar*\|*class*}
|
||||
|
||||
*options*
|
||||
: See [Options for the jdeprscan Command]
|
||||
|
||||
*dir*\|*jar*\|*class*
|
||||
: `jdeprscan` command scans each argument for usages of deprecated APIs. The
|
||||
arguments can be a:
|
||||
|
||||
- *dir*: Directory
|
||||
|
||||
- *jar*: JAR file
|
||||
|
||||
- *class*: Class name or class file
|
||||
|
||||
The class name should use a dot (`.`) as a separator. For example:
|
||||
|
||||
`java.lang.Thread`
|
||||
|
||||
For nested classes, the dollar sign `$` separator character should be used.
|
||||
For example:
|
||||
|
||||
`java.lang.Thread$State`
|
||||
|
||||
A class file can also be named. For example:
|
||||
|
||||
`build/classes/java/lang/Thread$State.class`
|
||||
|
||||
## Description
|
||||
|
||||
The `jdeprscan` tool is a static analysis tool provided by the JDK that scans a
|
||||
JAR file or some other aggregation of class files for uses of deprecated API
|
||||
elements. The deprecated APIs identified by the `jdeprscan` tool are only those
|
||||
that are defined by Java SE. Deprecated APIs defined by third-party libraries
|
||||
aren't reported.
|
||||
|
||||
To scan a JAR file or a set of class files, you must first ensure that all of
|
||||
the classes that the scanned classes depend upon are present in the class
|
||||
path. Set the class path using the `--class-path` option described in [Options
|
||||
for the jdeprscan Command]. Typically, you would use the same class path as
|
||||
the one that you use when invoking your application.
|
||||
|
||||
If the `jdeprscan` can't find all the dependent classes, it will generate an
|
||||
error message for each class that's missing. These error messages are typically
|
||||
of the form:
|
||||
|
||||
> `error: cannot find class ...`
|
||||
|
||||
If these errors occur, then you must adjust the class path so that it includes
|
||||
all dependent classes.
|
||||
|
||||
## Options for the jdeprscan Command
|
||||
|
||||
The following options are available:
|
||||
|
||||
`--class-path` *path*
|
||||
: Provides a search path for resolution of dependent classes.
|
||||
|
||||
*path* can be a search path that consists of one or more directories
|
||||
separated by the system-specific path separator. For example:
|
||||
|
||||
- **Linux and macOS:**
|
||||
|
||||
> `--class-path /some/directory:/another/different/dir`
|
||||
|
||||
**Note:**
|
||||
|
||||
On Windows, use a semicolon (`;`) as the separator instead of a colon
|
||||
(`:`).
|
||||
|
||||
- **Windows:**
|
||||
|
||||
> `--class-path \some\directory;\another\different\dir`
|
||||
|
||||
`--for-removal`
|
||||
: Limits scanning or listing to APIs that are deprecated for removal. Can't
|
||||
be used with a release value of 6, 7, or 8.
|
||||
|
||||
`--full-version`
|
||||
: Prints out the full version string of the tool.
|
||||
|
||||
`--help` or `-h`
|
||||
: Prints out a full help message.
|
||||
|
||||
`--list` or `-l`
|
||||
: Prints the set of deprecated APIs. No scanning is done, so no directory,
|
||||
jar, or class arguments should be provided.
|
||||
|
||||
`--release` `6`\|`7`\|`8`\|`9`
|
||||
: Specifies the Java SE release that provides the set of deprecated APIs for
|
||||
scanning.
|
||||
|
||||
`--verbose` or `-v`
|
||||
: Enables additional message output during processing.
|
||||
|
||||
`--version`
|
||||
: Prints out the abbreviated version string of the tool.
|
||||
|
||||
## Example of jdeprscan Output
|
||||
|
||||
The JAR file for this library will be named something similar to
|
||||
`commons-math3-3.6.1.jar`. To scan this JAR file for the use of deprecated
|
||||
APIs, run the following command:
|
||||
|
||||
> `jdeprscan commons-math3-3.6.1.jar`
|
||||
|
||||
This command produces several lines of output. For example, one line of output
|
||||
might be:
|
||||
|
||||
```
|
||||
class org/apache/commons/math3/util/MathUtils uses deprecated method java/lang/Double::<init>(D)V
|
||||
```
|
||||
|
||||
**Note:**
|
||||
|
||||
The class name is specified using the slash-separated binary name as described
|
||||
in JVMS 4.2.1. This is the form used internally in class files.
|
||||
|
||||
The deprecated API it uses is a method on the `java.lang.Double` class.
|
||||
|
||||
The name of the deprecated method is `<init>`, which is a special name that
|
||||
means that the method is actually a constructor. Another special name is
|
||||
`<clinit>`, which indicates a class static initializer.
|
||||
|
||||
Other methods are listed just by their method name. Following the method name
|
||||
is the argument list and return type:
|
||||
|
||||
> `(D)V`
|
||||
|
||||
This indicates that it takes just one double value (a primitive) and returns
|
||||
void. The argument and return types can become cryptic. For example, another
|
||||
line of output might be:
|
||||
|
||||
```
|
||||
class org/apache/commons/math3/util/Precision uses deprecated method java/math/BigDecimal::setScale(II)Ljava/math/BigDecimal;
|
||||
```
|
||||
|
||||
In this line of output, the deprecated method is on class
|
||||
`java.math.BigDecimal`, and the method is `setScale()`. In this case, the
|
||||
`(II)` means that it takes two `int` arguments. The `Ljava/math/BigDecimal;`
|
||||
after the parentheses means that it returns a reference to
|
||||
`java.math.BigDecimal`.
|
||||
|
||||
## jdeprscan Analysis Can Be Version-Specific
|
||||
|
||||
You can use `jdeprscan` relative to the previous three JDK releases. For
|
||||
example, if you are running JDK 9, then you can check against JDK 8, 7, and 6.
|
||||
|
||||
As an example, look at this code snippet:
|
||||
|
||||
```
|
||||
public class Deprecations {
|
||||
SecurityManager sm = new RMISecurityManager(); // deprecated in 8
|
||||
Boolean b2 = new Boolean(true); // deprecated in 9
|
||||
}
|
||||
```
|
||||
|
||||
The complete class compiles without warnings in JDK 7.
|
||||
|
||||
If you run `jdeprscan` on a system with JDK 9, then you see:
|
||||
|
||||
```
|
||||
$ jdeprscan --class-path classes --release 7 example.Deprecations
|
||||
(no output)
|
||||
```
|
||||
|
||||
Run `jdeprscan` with a release value of 8:
|
||||
|
||||
```
|
||||
$ jdeprscan --class-path classes --release 8 example.Deprecations
|
||||
class example/Deprecations uses type java/rmi/RMISecurityManager deprecated
|
||||
class example/Deprecations uses method in type java/rmi/RMISecurityManager deprecated
|
||||
```
|
||||
|
||||
Run `jdeprscan` on JDK 9:
|
||||
|
||||
```
|
||||
$ jdeprscan --class-path classes example.Deprecations
|
||||
class example/Deprecations uses type java/rmi/RMISecurityManager deprecated
|
||||
class example/Deprecations uses method in type java/rmi/RMISecurityManager deprecated
|
||||
class example/Deprecations uses method java/lang/Boolean <init> (Z)V deprecated
|
||||
```
|
@ -1,338 +0,0 @@
|
||||
.\" Copyright (c) 2013, 2023, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JDEPS" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jdeps - launch the Java class dependency analyzer
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jdeps\f[R] [\f[I]options\f[R]] \f[I]path\f[R] ...
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
Command-line options.
|
||||
For detailed descriptions of the options that can be used, see
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
\f[B]Possible Options\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[B]Module Dependence Analysis Options\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[B]Options to Filter Dependences\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[B]Options to Filter Classes to be Analyzed\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[I]path\f[R]
|
||||
A pathname to the \f[V].class\f[R] file, directory, or JAR file to
|
||||
analyze.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jdeps\f[R] command shows the package-level or class-level
|
||||
dependencies of Java class files.
|
||||
The input class can be a path name to a \f[V].class\f[R] file, a
|
||||
directory, a JAR file, or it can be a fully qualified class name to
|
||||
analyze all class files.
|
||||
The options determine the output.
|
||||
By default, the \f[V]jdeps\f[R] command writes the dependencies to the
|
||||
system output.
|
||||
The command can generate the dependencies in DOT language (see the
|
||||
\f[V]-dotoutput\f[R] option).
|
||||
.SH POSSIBLE OPTIONS
|
||||
.TP
|
||||
\f[V]-?\f[R] or \f[V]-h\f[R] or \f[V]--help\f[R]
|
||||
Prints the help message.
|
||||
.TP
|
||||
\f[V]-dotoutput\f[R] \f[I]dir\f[R] or \f[V]--dot-output\f[R] \f[I]dir\f[R]
|
||||
Specifies the destination directory for DOT file output.
|
||||
If this option is specified, then the \f[V]jdeps\f[R]command generates
|
||||
one \f[V].dot\f[R] file for each analyzed archive named
|
||||
\f[V]archive-file-name.dot\f[R] that lists the dependencies, and also a
|
||||
summary file named \f[V]summary.dot\f[R] that lists the dependencies
|
||||
among the archive files.
|
||||
.TP
|
||||
\f[V]-s\f[R] or \f[V]-summary\f[R]
|
||||
Prints a dependency summary only.
|
||||
.TP
|
||||
\f[V]-v\f[R] or \f[V]-verbose\f[R]
|
||||
Prints all class-level dependencies.
|
||||
This is equivalent to
|
||||
.RS
|
||||
.RS
|
||||
.PP
|
||||
\f[V]-verbose:class -filter:none\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-verbose:package\f[R]
|
||||
Prints package-level dependencies excluding, by default, dependences
|
||||
within the same package.
|
||||
.TP
|
||||
\f[V]-verbose:class\f[R]
|
||||
Prints class-level dependencies excluding, by default, dependencies
|
||||
within the same archive.
|
||||
.TP
|
||||
\f[V]-apionly\f[R] or \f[V]--api-only\f[R]
|
||||
Restricts the analysis to APIs, for example, dependences from the
|
||||
signature of \f[V]public\f[R] and \f[V]protected\f[R] members of public
|
||||
classes including field type, method parameter types, returned type, and
|
||||
checked exception types.
|
||||
.TP
|
||||
\f[V]-jdkinternals\f[R] or \f[V]--jdk-internals\f[R]
|
||||
Finds class-level dependences in the JDK internal APIs.
|
||||
By default, this option analyzes all classes specified in the
|
||||
\f[V]--classpath\f[R] option and input files unless you specified the
|
||||
\f[V]-include\f[R] option.
|
||||
You can\[aq]t use this option with the \f[V]-p\f[R], \f[V]-e\f[R], and
|
||||
\f[V]-s\f[R] options.
|
||||
.RS
|
||||
.PP
|
||||
\f[B]Warning\f[R]: The JDK internal APIs are inaccessible.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]-cp\f[R] \f[I]path\f[R], \f[V]-classpath\f[R] \f[I]path\f[R], or \f[V]--class-path\f[R] \f[I]path\f[R]
|
||||
Specifies where to find class files.
|
||||
.TP
|
||||
\f[V]--module-path\f[R] \f[I]module-path\f[R]
|
||||
Specifies the module path.
|
||||
.TP
|
||||
\f[V]--upgrade-module-path\f[R] \f[I]module-path\f[R]
|
||||
Specifies the upgrade module path.
|
||||
.TP
|
||||
\f[V]--system\f[R] \f[I]java-home\f[R]
|
||||
Specifies an alternate system module path.
|
||||
.TP
|
||||
\f[V]--add-modules\f[R] \f[I]module-name\f[R][\f[V],\f[R] \f[I]module-name\f[R]...]
|
||||
Adds modules to the root set for analysis.
|
||||
.TP
|
||||
\f[V]--multi-release\f[R] \f[I]version\f[R]
|
||||
Specifies the version when processing multi-release JAR files.
|
||||
\f[I]version\f[R] should be an integer >=9 or base.
|
||||
.TP
|
||||
\f[V]-q\f[R] or \f[V]-quiet\f[R]
|
||||
Doesn\[aq]t show missing dependencies from
|
||||
\f[V]-generate-module-info\f[R] output.
|
||||
.TP
|
||||
\f[V]-version\f[R] or \f[V]--version\f[R]
|
||||
Prints version information.
|
||||
.SH MODULE DEPENDENCE ANALYSIS OPTIONS
|
||||
.TP
|
||||
\f[V]-m\f[R] \f[I]module-name\f[R] or \f[V]--module\f[R] \f[I]module-name\f[R]
|
||||
Specifies the root module for analysis.
|
||||
.TP
|
||||
\f[V]--generate-module-info\f[R] \f[I]dir\f[R]
|
||||
Generates \f[V]module-info.java\f[R] under the specified directory.
|
||||
The specified JAR files will be analyzed.
|
||||
This option cannot be used with \f[V]--dot-output\f[R] or
|
||||
\f[V]--class-path\f[R] options.
|
||||
Use the \f[V]--generate-open-module\f[R] option for open modules.
|
||||
.TP
|
||||
\f[V]--generate-open-module\f[R] \f[I]dir\f[R]
|
||||
Generates \f[V]module-info.java\f[R] for the specified JAR files under
|
||||
the specified directory as open modules.
|
||||
This option cannot be used with the \f[V]--dot-output\f[R] or
|
||||
\f[V]--class-path\f[R] options.
|
||||
.TP
|
||||
\f[V]--check\f[R] \f[I]module-name\f[R] [\f[V],\f[R] \f[I]module-name\f[R]...]
|
||||
Analyzes the dependence of the specified modules.
|
||||
It prints the module descriptor, the resulting module dependences after
|
||||
analysis and the graph after transition reduction.
|
||||
It also identifies any unused qualified exports.
|
||||
.TP
|
||||
\f[V]--list-deps\f[R]
|
||||
Lists the module dependences and also the package names of JDK internal
|
||||
APIs (if referenced).
|
||||
This option transitively analyzes libraries on class path and module
|
||||
path if referenced.
|
||||
Use \f[V]--no-recursive\f[R] option for non-transitive dependency
|
||||
analysis.
|
||||
.TP
|
||||
\f[V]--list-reduced-deps\f[R]
|
||||
Same as \f[V]--list-deps\f[R] without listing the implied reads edges
|
||||
from the module graph.
|
||||
If module M1 reads M2, and M2 requires transitive on M3, then M1 reading
|
||||
M3 is implied and is not shown in the graph.
|
||||
.TP
|
||||
\f[V]--print-module-deps\f[R]
|
||||
Same as \f[V]--list-reduced-deps\f[R] with printing a comma-separated
|
||||
list of module dependences.
|
||||
The output can be used by \f[V]jlink --add-modules\f[R] to create a
|
||||
custom image that contains those modules and their transitive
|
||||
dependences.
|
||||
.TP
|
||||
\f[V]--ignore-missing-deps\f[R]
|
||||
Ignore missing dependences.
|
||||
.SH OPTIONS TO FILTER DEPENDENCES
|
||||
.TP
|
||||
\f[V]-p\f[R] \f[I]pkg_name\f[R], \f[V]-package\f[R] \f[I]pkg_name\f[R], or \f[V]--package\f[R] \f[I]pkg_name\f[R]
|
||||
Finds dependences matching the specified package name.
|
||||
You can specify this option multiple times for different packages.
|
||||
The \f[V]-p\f[R] and \f[V]-e\f[R] options are mutually exclusive.
|
||||
.TP
|
||||
\f[V]-e\f[R] \f[I]regex\f[R], \f[V]-regex\f[R] \f[I]regex\f[R], or \f[V]--regex\f[R] \f[I]regex\f[R]
|
||||
Finds dependences matching the specified pattern.
|
||||
The \f[V]-p\f[R] and \f[V]-e\f[R] options are mutually exclusive.
|
||||
.TP
|
||||
\f[V]--require\f[R] \f[I]module-name\f[R]
|
||||
Finds dependences matching the given module name (may be given multiple
|
||||
times).
|
||||
The \f[V]--package\f[R], \f[V]--regex\f[R], and \f[V]--require\f[R]
|
||||
options are mutually exclusive.
|
||||
.TP
|
||||
\f[V]-f\f[R] \f[I]regex\f[R] or \f[V]-filter\f[R] \f[I]regex\f[R]
|
||||
Filters dependences matching the given pattern.
|
||||
If give multiple times, the last one will be selected.
|
||||
.TP
|
||||
\f[V]-filter:package\f[R]
|
||||
Filters dependences within the same package.
|
||||
This is the default.
|
||||
.TP
|
||||
\f[V]-filter:archive\f[R]
|
||||
Filters dependences within the same archive.
|
||||
.TP
|
||||
\f[V]-filter:module\f[R]
|
||||
Filters dependences within the same module.
|
||||
.TP
|
||||
\f[V]-filter:none\f[R]
|
||||
No \f[V]-filter:package\f[R] and \f[V]-filter:archive\f[R] filtering.
|
||||
Filtering specified via the \f[V]-filter\f[R] option still applies.
|
||||
.TP
|
||||
\f[V]--missing-deps\f[R]
|
||||
Finds missing dependences.
|
||||
This option cannot be used with \f[V]-p\f[R], \f[V]-e\f[R] and
|
||||
\f[V]-s\f[R] options.
|
||||
.SH OPTIONS TO FILTER CLASSES TO BE ANALYZED
|
||||
.TP
|
||||
\f[V]-include\f[R] \f[I]regex\f[R]
|
||||
Restricts analysis to the classes matching pattern.
|
||||
This option filters the list of classes to be analyzed.
|
||||
It can be used together with \f[V]-p\f[R] and \f[V]-e\f[R], which apply
|
||||
the pattern to the dependencies.
|
||||
.TP
|
||||
\f[V]-R\f[R] or \f[V]--recursive\f[R]
|
||||
Recursively traverses all run-time dependences.
|
||||
The \f[V]-R\f[R] option implies \f[V]-filter:none\f[R].
|
||||
If \f[V]-p\f[R], \f[V]-e\f[R], or \f[V]-f\f[R] options are specified,
|
||||
only the matching dependences are analyzed.
|
||||
.TP
|
||||
\f[V]--no-recursive\f[R]
|
||||
Do not recursively traverse dependences.
|
||||
.TP
|
||||
\f[V]-I\f[R] or \f[V]--inverse\f[R]
|
||||
Analyzes the dependences per other given options and then finds all
|
||||
artifacts that directly and indirectly depend on the matching nodes.
|
||||
This is equivalent to the inverse of the compile-time view analysis and
|
||||
the print dependency summary.
|
||||
This option must be used with the \f[V]--require\f[R],
|
||||
\f[V]--package\f[R], or \f[V]--regex\f[R] options.
|
||||
.TP
|
||||
\f[V]--compile-time\f[R]
|
||||
Analyzes the compile-time view of transitive dependencies, such as the
|
||||
compile-time view of the \f[V]-R\f[R] option.
|
||||
Analyzes the dependences per other specified options.
|
||||
If a dependency is found from a directory, a JAR file or a module, all
|
||||
classes in that containing archive are analyzed.
|
||||
.SH EXAMPLE OF ANALYZING DEPENDENCIES
|
||||
.PP
|
||||
The following example demonstrates analyzing the dependencies of the
|
||||
\f[V]Notepad.jar\f[R] file.
|
||||
.PP
|
||||
\f[B]Linux and macOS:\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jdeps demo/jfc/Notepad/Notepad.jar
|
||||
Notepad.jar -> java.base
|
||||
Notepad.jar -> java.desktop
|
||||
Notepad.jar -> java.logging
|
||||
<unnamed> (Notepad.jar)
|
||||
-> java.awt
|
||||
-> java.awt.event
|
||||
-> java.beans
|
||||
-> java.io
|
||||
-> java.lang
|
||||
-> java.net
|
||||
-> java.util
|
||||
-> java.util.logging
|
||||
-> javax.swing
|
||||
-> javax.swing.border
|
||||
-> javax.swing.event
|
||||
-> javax.swing.text
|
||||
-> javax.swing.tree
|
||||
-> javax.swing.undo
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]Windows:\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
C:\[rs]Java\[rs]jdk1.9.0>jdeps demo\[rs]jfc\[rs]Notepad\[rs]Notepad.jar
|
||||
Notepad.jar -> java.base
|
||||
Notepad.jar -> java.desktop
|
||||
Notepad.jar -> java.logging
|
||||
<unnamed> (Notepad.jar)
|
||||
-> java.awt
|
||||
-> java.awt.event
|
||||
-> java.beans
|
||||
-> java.io
|
||||
-> java.lang
|
||||
-> java.net
|
||||
-> java.util
|
||||
-> java.util.logging
|
||||
-> javax.swing
|
||||
-> javax.swing.border
|
||||
-> javax.swing.event
|
||||
-> javax.swing.text
|
||||
-> javax.swing.tree
|
||||
-> javax.swing.undo
|
||||
\f[R]
|
||||
.fi
|
||||
.SH EXAMPLE USING THE --INVERSE OPTION
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jdeps --inverse --require java.xml.bind
|
||||
Inverse transitive dependences on [java.xml.bind]
|
||||
java.xml.bind <- java.se.ee
|
||||
java.xml.bind <- jdk.xml.ws
|
||||
java.xml.bind <- java.xml.ws <- java.se.ee
|
||||
java.xml.bind <- java.xml.ws <- jdk.xml.ws
|
||||
java.xml.bind <- jdk.xml.bind <- jdk.xml.ws
|
||||
\f[R]
|
||||
.fi
|
297
src/jdk.jdeps/share/man/jdeps.md
Normal file
297
src/jdk.jdeps/share/man/jdeps.md
Normal file
@ -0,0 +1,297 @@
|
||||
---
|
||||
# Copyright (c) 2013, 2023, 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.
|
||||
#
|
||||
|
||||
title: 'JDEPS(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jdeps - launch the Java class dependency analyzer
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jdeps` \[*options*\] *path* ...
|
||||
|
||||
*options*
|
||||
: Command-line options. For detailed descriptions of the options that can be
|
||||
used, see
|
||||
|
||||
- [Possible Options]
|
||||
|
||||
- [Module Dependence Analysis Options]
|
||||
|
||||
- [Options to Filter Dependences]
|
||||
|
||||
- [Options to Filter Classes to be Analyzed]
|
||||
|
||||
*path*
|
||||
: A pathname to the `.class` file, directory, or JAR file to analyze.
|
||||
|
||||
## Description
|
||||
|
||||
The `jdeps` command shows the package-level or class-level dependencies of Java
|
||||
class files. The input class can be a path name to a `.class` file, a
|
||||
directory, a JAR file, or it can be a fully qualified class name to analyze all
|
||||
class files. The options determine the output. By default, the `jdeps` command
|
||||
writes the dependencies to the system output. The command can generate the
|
||||
dependencies in DOT language (see the `-dotoutput` option).
|
||||
|
||||
## Possible Options
|
||||
|
||||
`-?` or `-h` or `--help`
|
||||
: Prints the help message.
|
||||
|
||||
`-dotoutput` *dir* or `--dot-output` *dir*
|
||||
: Specifies the destination directory for DOT file output. If this option is
|
||||
specified, then the `jdeps`command generates one `.dot` file for each
|
||||
analyzed archive named `archive-file-name.dot` that lists the dependencies,
|
||||
and also a summary file named `summary.dot` that lists the dependencies
|
||||
among the archive files.
|
||||
|
||||
`-s` or `-summary`
|
||||
: Prints a dependency summary only.
|
||||
|
||||
`-v` or `-verbose`
|
||||
: Prints all class-level dependencies. This is equivalent to
|
||||
|
||||
> `-verbose:class -filter:none`
|
||||
|
||||
`-verbose:package`
|
||||
: Prints package-level dependencies excluding, by default, dependences within
|
||||
the same package.
|
||||
|
||||
`-verbose:class`
|
||||
: Prints class-level dependencies excluding, by default, dependencies within
|
||||
the same archive.
|
||||
|
||||
`-apionly` or `--api-only`
|
||||
: Restricts the analysis to APIs, for example, dependences from the signature
|
||||
of `public` and `protected` members of public classes including field type,
|
||||
method parameter types, returned type, and checked exception types.
|
||||
|
||||
`-jdkinternals` or `--jdk-internals`
|
||||
: Finds class-level dependences in the JDK internal APIs. By default, this
|
||||
option analyzes all classes specified in the `--classpath` option and input
|
||||
files unless you specified the `-include` option. You can't use this option
|
||||
with the `-p`, `-e`, and `-s` options.
|
||||
|
||||
**Warning**: The JDK internal APIs are inaccessible.
|
||||
|
||||
`-cp` *path*, `-classpath` *path*, or `--class-path` *path*
|
||||
: Specifies where to find class files.
|
||||
|
||||
`--module-path` *module-path*
|
||||
: Specifies the module path.
|
||||
|
||||
`--upgrade-module-path` *module-path*
|
||||
: Specifies the upgrade module path.
|
||||
|
||||
`--system` *java-home*
|
||||
: Specifies an alternate system module path.
|
||||
|
||||
`--add-modules` *module-name*\[`,` *module-name*...\]
|
||||
: Adds modules to the root set for analysis.
|
||||
|
||||
`--multi-release` *version*
|
||||
: Specifies the version when processing multi-release JAR files. *version*
|
||||
should be an integer \>=9 or base.
|
||||
|
||||
`-q` or `-quiet`
|
||||
: Doesn't show missing dependencies from `-generate-module-info` output.
|
||||
|
||||
`-version` or `--version`
|
||||
: Prints version information.
|
||||
|
||||
## Module Dependence Analysis Options
|
||||
|
||||
`-m` *module-name* or `--module` *module-name*
|
||||
: Specifies the root module for analysis.
|
||||
|
||||
`--generate-module-info` *dir*
|
||||
: Generates `module-info.java` under the specified directory. The specified
|
||||
JAR files will be analyzed. This option cannot be used with `--dot-output`
|
||||
or `--class-path` options. Use the `--generate-open-module` option for open
|
||||
modules.
|
||||
|
||||
`--generate-open-module` *dir*
|
||||
: Generates `module-info.java` for the specified JAR files under the
|
||||
specified directory as open modules. This option cannot be used with the
|
||||
`--dot-output` or `--class-path` options.
|
||||
|
||||
`--check` *module-name* \[`,` *module-name*...\]
|
||||
: Analyzes the dependence of the specified modules. It prints the module
|
||||
descriptor, the resulting module dependences after analysis and the graph
|
||||
after transition reduction. It also identifies any unused qualified
|
||||
exports.
|
||||
|
||||
`--list-deps`
|
||||
: Lists the module dependences and also the package names of JDK internal
|
||||
APIs (if referenced). This option transitively analyzes libraries on
|
||||
class path and module path if referenced. Use `--no-recursive` option for
|
||||
non-transitive dependency analysis.
|
||||
|
||||
`--list-reduced-deps`
|
||||
: Same as `--list-deps` without listing the implied reads edges from the
|
||||
module graph. If module M1 reads M2, and M2 requires transitive on M3, then
|
||||
M1 reading M3 is implied and is not shown in the graph.
|
||||
|
||||
`--print-module-deps`
|
||||
: Same as `--list-reduced-deps` with printing a comma-separated list of
|
||||
module dependences. The output can be used by `jlink --add-modules` to
|
||||
create a custom image that contains those modules and their transitive
|
||||
dependences.
|
||||
|
||||
`--ignore-missing-deps`
|
||||
: Ignore missing dependences.
|
||||
|
||||
## Options to Filter Dependences
|
||||
|
||||
`-p` *pkg\_name*, `-package` *pkg\_name*, or `--package` *pkg\_name*
|
||||
: Finds dependences matching the specified package name. You can specify this
|
||||
option multiple times for different packages. The `-p` and `-e` options are
|
||||
mutually exclusive.
|
||||
|
||||
`-e` *regex*, `-regex` *regex*, or `--regex` *regex*
|
||||
: Finds dependences matching the specified pattern. The `-p` and `-e` options
|
||||
are mutually exclusive.
|
||||
|
||||
`--require` *module-name*
|
||||
: Finds dependences matching the given module name (may be given multiple
|
||||
times). The `--package`, `--regex`, and `--require` options are mutually
|
||||
exclusive.
|
||||
|
||||
`-f` *regex* or `-filter` *regex*
|
||||
: Filters dependences matching the given pattern. If give multiple times, the
|
||||
last one will be selected.
|
||||
|
||||
`-filter:package`
|
||||
: Filters dependences within the same package. This is the default.
|
||||
|
||||
`-filter:archive`
|
||||
: Filters dependences within the same archive.
|
||||
|
||||
`-filter:module`
|
||||
: Filters dependences within the same module.
|
||||
|
||||
`-filter:none`
|
||||
: No `-filter:package` and `-filter:archive` filtering. Filtering specified
|
||||
via the `-filter` option still applies.
|
||||
|
||||
`--missing-deps`
|
||||
: Finds missing dependences. This option cannot be used with `-p`, `-e` and
|
||||
`-s` options.
|
||||
|
||||
## Options to Filter Classes to be Analyzed
|
||||
|
||||
`-include` *regex*
|
||||
: Restricts analysis to the classes matching pattern. This option filters the
|
||||
list of classes to be analyzed. It can be used together with `-p` and `-e`,
|
||||
which apply the pattern to the dependencies.
|
||||
|
||||
`-R` or `--recursive`
|
||||
: Recursively traverses all run-time dependences. The `-R` option implies
|
||||
`-filter:none`. If `-p`, `-e`, or `-f` options are specified, only the
|
||||
matching dependences are analyzed.
|
||||
|
||||
`--no-recursive`
|
||||
: Do not recursively traverse dependences.
|
||||
|
||||
`-I` or `--inverse`
|
||||
: Analyzes the dependences per other given options and then finds all
|
||||
artifacts that directly and indirectly depend on the matching nodes. This
|
||||
is equivalent to the inverse of the compile-time view analysis and the
|
||||
print dependency summary. This option must be used with the `--require`,
|
||||
`--package`, or `--regex` options.
|
||||
|
||||
`--compile-time`
|
||||
: Analyzes the compile-time view of transitive dependencies, such as the
|
||||
compile-time view of the `-R` option. Analyzes the dependences per other
|
||||
specified options. If a dependency is found from a directory, a JAR file or
|
||||
a module, all classes in that containing archive are analyzed.
|
||||
|
||||
## Example of Analyzing Dependencies
|
||||
|
||||
The following example demonstrates analyzing the dependencies of the
|
||||
`Notepad.jar` file.
|
||||
|
||||
**Linux and macOS:**
|
||||
|
||||
```
|
||||
$ jdeps demo/jfc/Notepad/Notepad.jar
|
||||
Notepad.jar -> java.base
|
||||
Notepad.jar -> java.desktop
|
||||
Notepad.jar -> java.logging
|
||||
<unnamed> (Notepad.jar)
|
||||
-> java.awt
|
||||
-> java.awt.event
|
||||
-> java.beans
|
||||
-> java.io
|
||||
-> java.lang
|
||||
-> java.net
|
||||
-> java.util
|
||||
-> java.util.logging
|
||||
-> javax.swing
|
||||
-> javax.swing.border
|
||||
-> javax.swing.event
|
||||
-> javax.swing.text
|
||||
-> javax.swing.tree
|
||||
-> javax.swing.undo
|
||||
```
|
||||
|
||||
**Windows:**
|
||||
|
||||
```
|
||||
C:\Java\jdk1.9.0>jdeps demo\jfc\Notepad\Notepad.jar
|
||||
Notepad.jar -> java.base
|
||||
Notepad.jar -> java.desktop
|
||||
Notepad.jar -> java.logging
|
||||
<unnamed> (Notepad.jar)
|
||||
-> java.awt
|
||||
-> java.awt.event
|
||||
-> java.beans
|
||||
-> java.io
|
||||
-> java.lang
|
||||
-> java.net
|
||||
-> java.util
|
||||
-> java.util.logging
|
||||
-> javax.swing
|
||||
-> javax.swing.border
|
||||
-> javax.swing.event
|
||||
-> javax.swing.text
|
||||
-> javax.swing.tree
|
||||
-> javax.swing.undo
|
||||
```
|
||||
|
||||
## Example Using the --inverse Option
|
||||
|
||||
```
|
||||
$ jdeps --inverse --require java.xml.bind
|
||||
Inverse transitive dependences on [java.xml.bind]
|
||||
java.xml.bind <- java.se.ee
|
||||
java.xml.bind <- jdk.xml.ws
|
||||
java.xml.bind <- java.xml.ws <- java.se.ee
|
||||
java.xml.bind <- java.xml.ws <- jdk.xml.ws
|
||||
java.xml.bind <- jdk.xml.bind <- jdk.xml.ws
|
||||
```
|
@ -1,220 +0,0 @@
|
||||
.\" Copyright (c) 2024, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JNATIVESCAN" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jnativescan - static analysis tool that scans one or more jar files for
|
||||
uses of native functionalities, such as restricted method calls or
|
||||
\f[V]native\f[R] method declarations.
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jnativescan\f[R] [\f[I]options\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
See \f[B]Options for the jnativescan Command\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jnative\f[R] tool is a static analysis tool provided by the JDK
|
||||
that scans a JAR file for uses of native functionalities, such as
|
||||
restricted method calls or \f[V]native\f[R] method declarations.
|
||||
.PP
|
||||
\f[V]jnativescan\f[R] accepts a runtime class path and module path
|
||||
configuration, as well as a set of root modules, and a target release.
|
||||
It scans the jars on the class and module paths, and reports uses of
|
||||
native functionalities either in a tree like structure, which also
|
||||
identifies that calling classes and methods, or as a list of module
|
||||
names when the \f[V]--print-native-access\f[R] flag is specified.
|
||||
.SH OPTIONS FOR THE JNATIVESCAN COMMAND
|
||||
.PP
|
||||
The following options are available:
|
||||
.TP
|
||||
\f[V]--class-path\f[R] \f[I]path\f[R]
|
||||
Used to specify a list of paths pointing to jar files to be scanned.
|
||||
.PP
|
||||
All jar files specified through this list will be scanned.
|
||||
If a jar file contains a \f[V]Class-Path\f[R] attribute in its manifest,
|
||||
jar files listed there will be scanned as well.
|
||||
Jar files listed in the \f[V]Class-Path\f[R] manifest attribute that can
|
||||
not be found are ignored.
|
||||
All the jar files found are treated as if they belonged to the unnamed
|
||||
module.
|
||||
.TP
|
||||
\f[V]--module-path\f[R] \f[I]path\f[R]
|
||||
Used to specify a list of paths pointing to jar files or directories
|
||||
containing jar files, that the tool can use to find modules that need to
|
||||
be scanned.
|
||||
The list of jar files that will be scanned depends on the
|
||||
\f[V]--add-modules\f[R] option.
|
||||
.RS
|
||||
.PP
|
||||
For both the \f[V]--class-path\f[R] and \f[V]--module-path\f[R] options,
|
||||
\f[I]path\f[R] should be a search path that consists of one or more jar
|
||||
files, separated by the system-specific path separator.
|
||||
For example:
|
||||
.IP \[bu] 2
|
||||
\f[B]Linux and macOS:\f[R]
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]--class-path /some/foo.jar:/another/different/bar.jar\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
On Windows, use a semicolon (\f[V];\f[R]) as the separator instead of a
|
||||
colon (\f[V]:\f[R]).
|
||||
.IP \[bu] 2
|
||||
\f[B]Windows:\f[R]
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]--class-path C:\[rs]some\[rs]foo.jar;C:\[rs]another\[rs]different\[rs]bar.jar\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--add-modules\f[R] \f[I]module[,module...]\f[R]
|
||||
Used to specify a comma-separated list of module names that indicate the
|
||||
root modules to scan.
|
||||
All the root modules will be scanned, as well as any modules that they
|
||||
depend on.
|
||||
This includes dependencies on service implementations specified through
|
||||
the \f[V]uses\f[R] directive in a module\[aq]s \f[V]module-info\f[R]
|
||||
file.
|
||||
All modules found on the module path that provide an implementation of
|
||||
such a service will be scanned as well.
|
||||
.TP
|
||||
\f[V]--release\f[R] \f[I]version\f[R]
|
||||
Used to specify the Java SE release that specifies the set of restricted
|
||||
methods to scan for.
|
||||
For multi-release jar files, this option also indicates the version of
|
||||
class file that should be loaded from the jar.
|
||||
This option should be set to the version of the runtime under which the
|
||||
application is eventually intended to be run.
|
||||
If this flag is omitted, the version of \f[V]jnativescan\f[R] is used as
|
||||
release version, which is the same as the version of the JDK that the
|
||||
tool belongs to.
|
||||
.TP
|
||||
\f[V]--print-native-access\f[R]
|
||||
Print a comma-separated list of module names that use native
|
||||
functionalities, instead of the default tree structure.
|
||||
.TP
|
||||
\f[V]--help\f[R] or \f[V]-h\f[R]
|
||||
Prints out a full help message.
|
||||
.TP
|
||||
\f[V]--version\f[R]
|
||||
Prints out the abbreviated version string of the tool.
|
||||
.SH EXAMPLE OF \f[V]jnativescan\f[R] USE
|
||||
.PP
|
||||
\f[V]jnativescan\f[R] accepts a runtime configuration in the form of a
|
||||
class path, module path, set of root modules, and a target release
|
||||
version.
|
||||
For the class path, the tool will scan all jar files, including those
|
||||
found recursively through the \f[V]Class-Path\f[R] manifest attribute.
|
||||
For the module path, the tool scans all root modules specified through
|
||||
\f[V]--add-modules\f[R], and any (transitive) dependence of the root
|
||||
modules, including any modules that contain service implementations that
|
||||
are used by a scanned module.
|
||||
.PP
|
||||
By default, the tool prints out which jars, classes, and methods use
|
||||
native functionalities, in a tree-like structure.
|
||||
The following is an example output:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jnativescan --class-path app.jar
|
||||
app.jar (ALL-UNNAMED):
|
||||
foo.Main:
|
||||
foo.Main::main(String[])void references restricted methods:
|
||||
java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment
|
||||
foo.Main::nativeMethod()void is a native method declaration
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[V]app.jar (ALL-UNNAMED)\f[R] is the path to the jar file, with the
|
||||
module name in parentheses behind it.
|
||||
Since in this case the jar file appears on the class path,
|
||||
\f[V]ALL-UNNAMED\f[R] is printed to indicate the unnamed module.
|
||||
The second line of the output, \f[V]foo.Main\f[R], indicates that
|
||||
methods using native functionalities were found in the
|
||||
\f[V]foo.Main\f[R] class.
|
||||
The next line:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
foo.Main::main(String[])void references restricted methods:
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Indicates that the \f[V]main(String[])\f[R] method in the
|
||||
\f[V]foo.Main\f[R] class references a restricted method, which is listed
|
||||
on the following line as:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Lastly, the text:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
foo.Main::nativeMethod()void is a native method declaration
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Indicates that the \f[V]foo.Main\f[R] class contains a declaration of a
|
||||
\f[V]native\f[R] method named \f[V]nativeMethod\f[R].
|
||||
.PP
|
||||
If we add \f[V]--print-native-access\f[R] to the example command line,
|
||||
we instead get a list of the names of modules that contain accesses to
|
||||
native functionalities:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
$ jnativescan --class-path app.jar --print-native-access
|
||||
ALL-UNNAMED
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
In this case the output consists of just \f[V]ALL-UNNAMED\f[R], which
|
||||
indicates a jar file on the class path, that is, in the unnamed module,
|
||||
contains an access to native functionalities.
|
175
src/jdk.jdeps/share/man/jnativescan.md
Normal file
175
src/jdk.jdeps/share/man/jnativescan.md
Normal file
@ -0,0 +1,175 @@
|
||||
---
|
||||
# Copyright (c) 2024, 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.
|
||||
#
|
||||
|
||||
title: 'JNATIVESCAN(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jnativescan - static analysis tool that scans one or more jar files for uses of
|
||||
native functionalities, such as restricted method calls or `native` method declarations.
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jnativescan` \[*options*\]
|
||||
|
||||
*options*
|
||||
: See [Options for the jnativescan Command]
|
||||
|
||||
## Description
|
||||
|
||||
The `jnative` tool is a static analysis tool provided by the JDK that scans a
|
||||
JAR file for uses of native functionalities, such as restricted method calls
|
||||
or `native` method declarations.
|
||||
|
||||
`jnativescan` accepts a runtime class path and module path configuration, as
|
||||
well as a set of root modules, and a target release. It scans the jars on the
|
||||
class and module paths, and reports uses of native functionalities either in a tree
|
||||
like structure, which also identifies that calling classes and methods, or as a list
|
||||
of module names when the `--print-native-access` flag is specified.
|
||||
|
||||
## Options for the jnativescan Command
|
||||
|
||||
The following options are available:
|
||||
|
||||
`--class-path` *path*
|
||||
: Used to specify a list of paths pointing to jar files to be scanned.
|
||||
|
||||
All jar files specified through this list will be scanned. If a jar file
|
||||
contains a `Class-Path` attribute in its manifest, jar files listed there
|
||||
will be scanned as well. Jar files listed in the `Class-Path` manifest
|
||||
attribute that can not be found are ignored. All the jar files found are
|
||||
treated as if they belonged to the unnamed module.
|
||||
|
||||
`--module-path` *path*
|
||||
: Used to specify a list of paths pointing to jar files or directories
|
||||
containing jar files, that the tool can use to find modules that need
|
||||
to be scanned. The list of jar files that will be scanned depends on the
|
||||
`--add-modules` option.
|
||||
|
||||
For both the `--class-path` and `--module-path` options, *path* should
|
||||
be a search path that consists of one or more jar files, separated by
|
||||
the system-specific path separator. For example:
|
||||
|
||||
- **Linux and macOS:**
|
||||
|
||||
> `--class-path /some/foo.jar:/another/different/bar.jar`
|
||||
|
||||
**Note:**
|
||||
|
||||
On Windows, use a semicolon (`;`) as the separator instead of a colon
|
||||
(`:`).
|
||||
|
||||
- **Windows:**
|
||||
|
||||
> `--class-path C:\some\foo.jar;C:\another\different\bar.jar`
|
||||
|
||||
`--add-modules` *module[,module...]*
|
||||
: Used to specify a comma-separated list of module names that indicate
|
||||
the root modules to scan. All the root modules will be scanned,
|
||||
as well as any modules that they depend on. This includes dependencies on
|
||||
service implementations specified through the `uses` directive in a module's
|
||||
`module-info` file. All modules found on the module path that provide an
|
||||
implementation of such a service will be scanned as well.
|
||||
|
||||
`--release` *version*
|
||||
: Used to specify the Java SE release that specifies the set of restricted
|
||||
methods to scan for. For multi-release jar files, this option also indicates
|
||||
the version of class file that should be loaded from the jar. This option
|
||||
should be set to the version of the runtime under which the application is
|
||||
eventually intended to be run. If this flag is omitted, the version of
|
||||
`jnativescan` is used as release version, which is the same as the version of
|
||||
the JDK that the tool belongs to.
|
||||
|
||||
`--print-native-access`
|
||||
: Print a comma-separated list of module names that use native functionalities,
|
||||
instead of the default tree structure.
|
||||
|
||||
`--help` or `-h`
|
||||
: Prints out a full help message.
|
||||
|
||||
`--version`
|
||||
: Prints out the abbreviated version string of the tool.
|
||||
|
||||
## Example of `jnativescan` use
|
||||
|
||||
`jnativescan` accepts a runtime configuration in the form of a class path, module
|
||||
path, set of root modules, and a target release version. For the class path, the
|
||||
tool will scan all jar files, including those found recursively through the
|
||||
`Class-Path` manifest attribute. For the module path, the tool scans all root
|
||||
modules specified through `--add-modules`, and any (transitive) dependence of
|
||||
the root modules, including any modules that contain service implementations that
|
||||
are used by a scanned module.
|
||||
|
||||
By default, the tool prints out which jars, classes, and methods use native
|
||||
functionalities, in a tree-like structure. The following is an example output:
|
||||
|
||||
```
|
||||
$ jnativescan --class-path app.jar
|
||||
app.jar (ALL-UNNAMED):
|
||||
foo.Main:
|
||||
foo.Main::main(String[])void references restricted methods:
|
||||
java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment
|
||||
foo.Main::nativeMethod()void is a native method declaration
|
||||
```
|
||||
|
||||
`app.jar (ALL-UNNAMED)` is the path to the jar file, with the module name in
|
||||
parentheses behind it. Since in this case the jar file appears on the class
|
||||
path, `ALL-UNNAMED` is printed to indicate the unnamed module. The second line
|
||||
of the output, `foo.Main`, indicates that methods using native functionalities
|
||||
were found in the `foo.Main` class. The next line:
|
||||
|
||||
```
|
||||
foo.Main::main(String[])void references restricted methods:
|
||||
```
|
||||
|
||||
Indicates that the `main(String[])` method in the `foo.Main` class references
|
||||
a restricted method, which is listed on the following line as:
|
||||
|
||||
```
|
||||
java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment
|
||||
```
|
||||
|
||||
Lastly, the text:
|
||||
|
||||
```
|
||||
foo.Main::nativeMethod()void is a native method declaration
|
||||
```
|
||||
|
||||
Indicates that the `foo.Main` class contains a declaration of a `native`
|
||||
method named `nativeMethod`.
|
||||
|
||||
If we add `--print-native-access` to the example command line, we instead
|
||||
get a list of the names of modules that contain accesses to native
|
||||
functionalities:
|
||||
|
||||
```
|
||||
$ jnativescan --class-path app.jar --print-native-access
|
||||
ALL-UNNAMED
|
||||
```
|
||||
|
||||
In this case the output consists of just `ALL-UNNAMED`, which indicates
|
||||
a jar file on the class path, that is, in the unnamed module, contains an access
|
||||
to native functionalities.
|
@ -1,277 +0,0 @@
|
||||
.\" Copyright (c) 1995, 2023, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JDB" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jdb - find and fix bugs in Java platform programs
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jdb\f[R] [\f[I]options\f[R]] [\f[I]classname\f[R]]
|
||||
[\f[I]arguments\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the \f[V]jdb\f[R] command-line options.
|
||||
See \f[B]Options for the jdb command\f[R].
|
||||
.TP
|
||||
\f[I]classname\f[R]
|
||||
This represents the name of the main class to debug.
|
||||
.TP
|
||||
\f[I]arguments\f[R]
|
||||
This represents the arguments that are passed to the \f[V]main()\f[R]
|
||||
method of the class.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The Java Debugger (JDB) is a simple command-line debugger for Java
|
||||
classes.
|
||||
The \f[V]jdb\f[R] command and its options call the JDB.
|
||||
The \f[V]jdb\f[R] command demonstrates the Java Platform Debugger
|
||||
Architecture and provides inspection and debugging of a local or remote
|
||||
JVM.
|
||||
.SH START A JDB SESSION
|
||||
.PP
|
||||
There are many ways to start a JDB session.
|
||||
The most frequently used way is to have the JDB launch a new JVM with
|
||||
the main class of the application to be debugged.
|
||||
Do this by substituting the \f[V]jdb\f[R] command for the \f[V]java\f[R]
|
||||
command in the command line.
|
||||
For example, if your application\[aq]s main class is \f[V]MyClass\f[R],
|
||||
then use the following command to debug it under the JDB:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jdb MyClass\f[R]
|
||||
.RE
|
||||
.PP
|
||||
When started this way, the \f[V]jdb\f[R] command calls a second JVM with
|
||||
the specified parameters, loads the specified class, and stops the JVM
|
||||
before executing that class\[aq]s first instruction.
|
||||
.PP
|
||||
Another way to use the \f[V]jdb\f[R] command is by attaching it to a JVM
|
||||
that\[aq]s already running.
|
||||
Syntax for starting a JVM to which the \f[V]jdb\f[R] command attaches
|
||||
when the JVM is running is as follows.
|
||||
This loads in-process debugging libraries and specifies the kind of
|
||||
connection to be made.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass\f[R]
|
||||
.RE
|
||||
.PP
|
||||
You can then attach the \f[V]jdb\f[R] command to the JVM with the
|
||||
following command:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jdb -attach 8000\f[R]
|
||||
.RE
|
||||
.PP
|
||||
8000 is the address of the running JVM.
|
||||
.PP
|
||||
The \f[V]MyClass\f[R] argument isn\[aq]t specified in the \f[V]jdb\f[R]
|
||||
command line in this case because the \f[V]jdb\f[R] command is
|
||||
connecting to an existing JVM instead of launching a new JVM.
|
||||
.PP
|
||||
There are many other ways to connect the debugger to a JVM, and all of
|
||||
them are supported by the \f[V]jdb\f[R] command.
|
||||
The Java Platform Debugger Architecture has additional documentation on
|
||||
these connection options.
|
||||
.SH BREAKPOINTS
|
||||
.PP
|
||||
Breakpoints can be set in the JDB at line numbers or at the first
|
||||
instruction of a method, for example:
|
||||
.IP \[bu] 2
|
||||
The command \f[V]stop at MyClass:22\f[R] sets a breakpoint at the first
|
||||
instruction for line 22 of the source file containing \f[V]MyClass\f[R].
|
||||
.IP \[bu] 2
|
||||
The command \f[V]stop in java.lang.String.length\f[R] sets a breakpoint
|
||||
at the beginning of the method \f[V]java.lang.String.length\f[R].
|
||||
.IP \[bu] 2
|
||||
The command \f[V]stop in MyClass.<clinit>\f[R] uses \f[V]<clinit>\f[R]
|
||||
to identify the static initialization code for \f[V]MyClass\f[R].
|
||||
.PP
|
||||
When a method is overloaded, you must also specify its argument types so
|
||||
that the proper method can be selected for a breakpoint.
|
||||
For example, \f[V]MyClass.myMethod(int,java.lang.String)\f[R] or
|
||||
\f[V]MyClass.myMethod()\f[R].
|
||||
.PP
|
||||
The \f[V]clear\f[R] command removes breakpoints using the following
|
||||
syntax: \f[V]clear MyClass:45\f[R].
|
||||
Using the \f[V]clear\f[R] or \f[V]stop\f[R] command with no argument
|
||||
displays a list of all breakpoints currently set.
|
||||
The \f[V]cont\f[R] command continues execution.
|
||||
.SH STEPPING
|
||||
.PP
|
||||
The \f[V]step\f[R] command advances execution to the next line whether
|
||||
it\[aq]s in the current stack frame or a called method.
|
||||
The \f[V]next\f[R] command advances execution to the next line in the
|
||||
current stack frame.
|
||||
.SH EXCEPTIONS
|
||||
.PP
|
||||
When an exception occurs for which there isn\[aq]t a \f[V]catch\f[R]
|
||||
statement anywhere in the throwing thread\[aq]s call stack, the JVM
|
||||
typically prints an exception trace and exits.
|
||||
When running under the JDB, however, control returns to the JDB at the
|
||||
offending throw.
|
||||
You can then use the \f[V]jdb\f[R] command to diagnose the cause of the
|
||||
exception.
|
||||
.PP
|
||||
Use the \f[V]catch\f[R] command to cause the debugged application to
|
||||
stop at other thrown exceptions, for example:
|
||||
\f[V]catch java.io.FileNotFoundException\f[R] or \f[V]catch\f[R]
|
||||
\f[V]mypackage.BigTroubleException\f[R].
|
||||
Any exception that\[aq]s an instance of the specified class or subclass
|
||||
stops the application at the point where the exception is thrown.
|
||||
.PP
|
||||
The \f[V]ignore\f[R] command negates the effect of an earlier
|
||||
\f[V]catch\f[R] command.
|
||||
The \f[V]ignore\f[R] command doesn\[aq]t cause the debugged JVM to
|
||||
ignore specific exceptions, but only to ignore the debugger.
|
||||
.SH OPTIONS FOR THE JDB COMMAND
|
||||
.PP
|
||||
When you use the \f[V]jdb\f[R] command instead of the \f[V]java\f[R]
|
||||
command on the command line, the \f[V]jdb\f[R] command accepts many of
|
||||
the same options as the \f[V]java\f[R] command.
|
||||
.PP
|
||||
The following options are accepted by the \f[V]jdb\f[R] command:
|
||||
.TP
|
||||
\f[V]-help\f[R]
|
||||
Displays a help message.
|
||||
.TP
|
||||
\f[V]-sourcepath\f[R] \f[I]dir1\f[R]\f[V]:\f[R]\f[I]dir2\f[R]\f[V]:\f[R]...
|
||||
Uses the specified path to search for source files in the specified
|
||||
path.
|
||||
If this option is not specified, then use the default path of dot
|
||||
(\f[V].\f[R]).
|
||||
.TP
|
||||
\f[V]-attach\f[R] \f[I]address\f[R]
|
||||
Attaches the debugger to a running JVM with the default connection
|
||||
mechanism.
|
||||
.TP
|
||||
\f[V]-listen\f[R] \f[I]address\f[R]
|
||||
Waits for a running JVM to connect to the specified address with a
|
||||
standard connector.
|
||||
.TP
|
||||
\f[V]-listenany\f[R]
|
||||
Waits for a running JVM to connect at any available address using a
|
||||
standard connector.
|
||||
.TP
|
||||
\f[V]-launch\f[R]
|
||||
Starts the debugged application immediately upon startup of the
|
||||
\f[V]jdb\f[R] command.
|
||||
The \f[V]-launch\f[R] option removes the need for the \f[V]run\f[R]
|
||||
command.
|
||||
The debugged application is launched and then stopped just before the
|
||||
initial application class is loaded.
|
||||
At that point, you can set any necessary breakpoints and use the
|
||||
\f[V]cont\f[R] command to continue execution.
|
||||
.TP
|
||||
\f[V]-listconnectors\f[R]
|
||||
Lists the connectors available in this JVM.
|
||||
.TP
|
||||
\f[V]-connect\f[R] \f[I]connector-name\f[R]\f[V]:\f[R]\f[I]name1\f[R]\f[V]=\f[R]\f[I]value1\f[R]....
|
||||
Connects to the target JVM with the named connector and listed argument
|
||||
values.
|
||||
.TP
|
||||
\f[V]-dbgtrace\f[R] [\f[I]flags\f[R]]
|
||||
Prints information for debugging the \f[V]jdb\f[R] command.
|
||||
.TP
|
||||
\f[V]-tclient\f[R]
|
||||
Runs the application in the Java HotSpot VM client.
|
||||
.TP
|
||||
\f[V]-trackallthreads\f[R]
|
||||
Track all threads as they are created, including virtual threads.
|
||||
See \f[B]Working With Virtual Threads\f[R] below.
|
||||
.TP
|
||||
\f[V]-tserver\f[R]
|
||||
Runs the application in the Java HotSpot VM server.
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]option\f[R]
|
||||
Passes \f[I]option\f[R] to the JDB JVM, where option is one of the
|
||||
options described on the reference page for the Java application
|
||||
launcher.
|
||||
For example, \f[V]-J-Xms48m\f[R] sets the startup memory to 48 MB.
|
||||
See \f[I]Overview of Java Options\f[R] in \f[B]java\f[R].
|
||||
.PP
|
||||
The following options are forwarded to the debuggee process:
|
||||
.TP
|
||||
\f[V]-R\f[R]\f[I]option\f[R]
|
||||
Passes \f[I]option\f[R] to the debuggee JVM, where option is one of the
|
||||
options described on the reference page for the Java application
|
||||
launcher.
|
||||
For example, \f[V]-R-Xms48m\f[R] sets the startup memory to 48 MB.
|
||||
See \f[I]Overview of Java Options\f[R] in \f[B]java\f[R].
|
||||
.TP
|
||||
\f[V]-v\f[R] or \f[V]-verbose\f[R][\f[V]:\f[R]\f[I]class\f[R]|\f[V]gc\f[R]|\f[V]jni\f[R]]
|
||||
Turns on the verbose mode.
|
||||
.TP
|
||||
\f[V]-D\f[R]\f[I]name\f[R]\f[V]=\f[R]\f[I]value\f[R]
|
||||
Sets a system property.
|
||||
.TP
|
||||
\f[V]-classpath\f[R] \f[I]dir\f[R]
|
||||
Lists directories separated by colons in which to look for classes.
|
||||
.TP
|
||||
\f[V]-X\f[R] \f[I]option\f[R]
|
||||
A nonstandard target JVM option.
|
||||
.PP
|
||||
Other options are supported to provide alternate mechanisms for
|
||||
connecting the debugger to the JVM that it\[aq]s to debug.
|
||||
.SH WORKING WITH VIRTUAL THREADS
|
||||
.PP
|
||||
Often virtual theads are created in such large numbers and frequency
|
||||
that they can overwhelm a debugger.
|
||||
For this reason by default JDB does not keep track of virtual threads as
|
||||
they are created.
|
||||
It will only keep track of virtual threads that an event has arrived on,
|
||||
such as a breakpoint event.
|
||||
The \f[V]-trackallthreads\f[R] option can be used to make JDB track all
|
||||
virtual threads as they are created.
|
||||
.PP
|
||||
When JDB first connects, it requests a list of all known threads from
|
||||
the Debug Agent.
|
||||
By default the debug agent does not return any virtual threads in this
|
||||
list, once again because the list could be so large that it overwhelms
|
||||
the debugger.
|
||||
The Debug Agent has an \f[V]includevirtualthreads\f[R] option that can
|
||||
be enabled to change this behavior so all known virtual threads will be
|
||||
included in the list.
|
||||
The JDB \f[V]-trackallthreads\f[R] option will cause JDB to
|
||||
automatically enable the Debug Agent\[aq]s
|
||||
\f[V]includevirtualthreads\f[R] option when JDB launches an application
|
||||
to debug.
|
||||
However, keep in mind that the Debug Agent may not know about any
|
||||
virtual threads that were created before JDB attached to the debugged
|
||||
application.
|
237
src/jdk.jdi/share/man/jdb.md
Normal file
237
src/jdk.jdi/share/man/jdb.md
Normal file
@ -0,0 +1,237 @@
|
||||
---
|
||||
# Copyright (c) 1995, 2023, 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.
|
||||
#
|
||||
|
||||
title: 'JDB(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jdb - find and fix bugs in Java platform programs
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jdb` \[*options*\] \[*classname*\] \[*arguments*\]
|
||||
|
||||
*options*
|
||||
: This represents the `jdb` command-line options. See [Options for the jdb
|
||||
command].
|
||||
|
||||
*classname*
|
||||
: This represents the name of the main class to debug.
|
||||
|
||||
*arguments*
|
||||
: This represents the arguments that are passed to the `main()` method of the
|
||||
class.
|
||||
|
||||
## Description
|
||||
|
||||
The Java Debugger (JDB) is a simple command-line debugger for Java classes. The
|
||||
`jdb` command and its options call the JDB. The `jdb` command demonstrates the
|
||||
Java Platform Debugger Architecture and provides inspection and debugging of a
|
||||
local or remote JVM.
|
||||
|
||||
## Start a JDB Session
|
||||
|
||||
There are many ways to start a JDB session. The most frequently used way is to
|
||||
have the JDB launch a new JVM with the main class of the application to be
|
||||
debugged. Do this by substituting the `jdb` command for the `java` command in
|
||||
the command line. For example, if your application's main class is `MyClass`,
|
||||
then use the following command to debug it under the JDB:
|
||||
|
||||
> `jdb MyClass`
|
||||
|
||||
When started this way, the `jdb` command calls a second JVM with the specified
|
||||
parameters, loads the specified class, and stops the JVM before executing that
|
||||
class's first instruction.
|
||||
|
||||
Another way to use the `jdb` command is by attaching it to a JVM that's already
|
||||
running. Syntax for starting a JVM to which the `jdb` command attaches when the
|
||||
JVM is running is as follows. This loads in-process debugging libraries and
|
||||
specifies the kind of connection to be made.
|
||||
|
||||
> `java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass`
|
||||
|
||||
You can then attach the `jdb` command to the JVM with the following command:
|
||||
|
||||
> `jdb -attach 8000`
|
||||
|
||||
8000 is the address of the running JVM.
|
||||
|
||||
The `MyClass` argument isn't specified in the `jdb` command line in this case
|
||||
because the `jdb` command is connecting to an existing JVM instead of launching
|
||||
a new JVM.
|
||||
|
||||
There are many other ways to connect the debugger to a JVM, and all of them are
|
||||
supported by the `jdb` command. The Java Platform Debugger Architecture has
|
||||
additional documentation on these connection options.
|
||||
|
||||
## Breakpoints
|
||||
|
||||
Breakpoints can be set in the JDB at line numbers or at the first instruction
|
||||
of a method, for example:
|
||||
|
||||
- The command `stop at MyClass:22` sets a breakpoint at the first instruction
|
||||
for line 22 of the source file containing `MyClass`.
|
||||
|
||||
- The command `stop in java.lang.String.length` sets a breakpoint at the
|
||||
beginning of the method `java.lang.String.length`.
|
||||
|
||||
- The command `stop in MyClass.<clinit>` uses `<clinit>` to identify the
|
||||
static initialization code for `MyClass`.
|
||||
|
||||
When a method is overloaded, you must also specify its argument types so that
|
||||
the proper method can be selected for a breakpoint. For example,
|
||||
`MyClass.myMethod(int,java.lang.String)` or `MyClass.myMethod()`.
|
||||
|
||||
The `clear` command removes breakpoints using the following syntax:
|
||||
`clear MyClass:45`. Using the `clear` or `stop` command with no argument
|
||||
displays a list of all breakpoints currently set. The `cont` command continues
|
||||
execution.
|
||||
|
||||
## Stepping
|
||||
|
||||
The `step` command advances execution to the next line whether it's in the
|
||||
current stack frame or a called method. The `next` command advances execution
|
||||
to the next line in the current stack frame.
|
||||
|
||||
## Exceptions
|
||||
|
||||
When an exception occurs for which there isn't a `catch` statement anywhere in
|
||||
the throwing thread's call stack, the JVM typically prints an exception trace
|
||||
and exits. When running under the JDB, however, control returns to the JDB at
|
||||
the offending throw. You can then use the `jdb` command to diagnose the cause
|
||||
of the exception.
|
||||
|
||||
Use the `catch` command to cause the debugged application to stop at other
|
||||
thrown exceptions, for example: `catch java.io.FileNotFoundException` or
|
||||
`catch` `mypackage.BigTroubleException`. Any exception that's an instance of
|
||||
the specified class or subclass stops the application at the point where the
|
||||
exception is thrown.
|
||||
|
||||
The `ignore` command negates the effect of an earlier `catch` command. The
|
||||
`ignore` command doesn't cause the debugged JVM to ignore specific exceptions,
|
||||
but only to ignore the debugger.
|
||||
|
||||
## Options for the jdb command
|
||||
|
||||
When you use the `jdb` command instead of the `java` command on the command
|
||||
line, the `jdb` command accepts many of the same options as the `java`
|
||||
command.
|
||||
|
||||
The following options are accepted by the `jdb` command:
|
||||
|
||||
`-help`
|
||||
: Displays a help message.
|
||||
|
||||
`-sourcepath` *dir1*`:`*dir2*`:`...
|
||||
: Uses the specified path to search for source files in the specified path.
|
||||
If this option is not specified, then use the default path of dot (`.`).
|
||||
|
||||
`-attach` *address*
|
||||
: Attaches the debugger to a running JVM with the default connection
|
||||
mechanism.
|
||||
|
||||
`-listen` *address*
|
||||
: Waits for a running JVM to connect to the specified address with a standard
|
||||
connector.
|
||||
|
||||
`-listenany`
|
||||
: Waits for a running JVM to connect at any available address using a
|
||||
standard connector.
|
||||
|
||||
`-launch`
|
||||
: Starts the debugged application immediately upon startup of the `jdb`
|
||||
command. The `-launch` option removes the need for the `run` command. The
|
||||
debugged application is launched and then stopped just before the initial
|
||||
application class is loaded. At that point, you can set any necessary
|
||||
breakpoints and use the `cont` command to continue execution.
|
||||
|
||||
`-listconnectors`
|
||||
: Lists the connectors available in this JVM.
|
||||
|
||||
`-connect` *connector-name*`:`*name1*`=`*value1*....
|
||||
: Connects to the target JVM with the named connector and listed argument
|
||||
values.
|
||||
|
||||
`-dbgtrace` \[*flags*\]
|
||||
: Prints information for debugging the `jdb` command.
|
||||
|
||||
`-tclient`
|
||||
: Runs the application in the Java HotSpot VM client.
|
||||
|
||||
`-trackallthreads`
|
||||
: Track all threads as they are created, including virtual threads.
|
||||
See [Working With Virtual Threads](#working-with-virtual-threads) below.
|
||||
|
||||
`-tserver`
|
||||
: Runs the application in the Java HotSpot VM server.
|
||||
|
||||
`-J`*option*
|
||||
: Passes *option* to the JDB JVM, where option is one of the options described on
|
||||
the reference page for the Java application launcher. For example,
|
||||
`-J-Xms48m` sets the startup memory to 48 MB. See *Overview of Java
|
||||
Options* in [java](java.html).
|
||||
|
||||
The following options are forwarded to the debuggee process:
|
||||
|
||||
`-R`*option*
|
||||
: Passes *option* to the debuggee JVM, where option is one of the options described on
|
||||
the reference page for the Java application launcher. For example,
|
||||
`-R-Xms48m` sets the startup memory to 48 MB. See *Overview of Java
|
||||
Options* in [java](java.html).
|
||||
|
||||
`-v` or `-verbose`\[`:`*class*\|`gc`\|`jni`\]
|
||||
: Turns on the verbose mode.
|
||||
|
||||
`-D`*name*`=`*value*
|
||||
: Sets a system property.
|
||||
|
||||
`-classpath` *dir*
|
||||
: Lists directories separated by colons in which to look for classes.
|
||||
|
||||
`-X` *option*
|
||||
: A nonstandard target JVM option.
|
||||
|
||||
Other options are supported to provide alternate mechanisms for connecting the
|
||||
debugger to the JVM that it's to debug.
|
||||
|
||||
## Working With Virtual Threads
|
||||
|
||||
Often virtual theads are created in such large numbers and frequency that they
|
||||
can overwhelm a debugger. For this reason by default JDB does not keep track
|
||||
of virtual threads as they are created. It will only keep track of virtual
|
||||
threads that an event has arrived on, such as a breakpoint event. The
|
||||
`-trackallthreads` option can be used to make JDB track all virtual threads
|
||||
as they are created.
|
||||
|
||||
When JDB first connects, it requests a list of all known threads from the Debug Agent.
|
||||
By default the debug agent does not return any virtual threads in this list, once
|
||||
again because the list could be so large that it overwhelms the debugger. The
|
||||
Debug Agent has an `includevirtualthreads` option that can be enabled to change
|
||||
this behavior so all known virtual threads will be included in the list. The
|
||||
JDB `-trackallthreads` option will cause JDB to automatically enable the Debug Agent's
|
||||
`includevirtualthreads` option when JDB launches an application to debug. However, keep in mind
|
||||
that the Debug Agent may not know about any virtual threads that were created
|
||||
before JDB attached to the debugged application.
|
@ -1,438 +0,0 @@
|
||||
.\" Copyright (c) 2019, 2023, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JFR" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jfr - print and manipulate Flight Recorder files
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
To print the contents of a flight recording to standard out:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]print\f[R] [\f[I]options\f[R]] \f[I]file\f[R]
|
||||
.PP
|
||||
To display aggregated event data on standard out:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]view\f[R] [\f[I]options\f[R]] \f[I]file\f[R]
|
||||
.PP
|
||||
To configure a .jfc settings file:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]configure\f[R] [\f[I]options\f[R]]
|
||||
.PP
|
||||
To print metadata information about flight recording events:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]metadata\f[R] [\f[I]file\f[R]]
|
||||
.PP
|
||||
To view the summary statistics for a flight recording file:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]summary\f[R] \f[I]file\f[R]
|
||||
.PP
|
||||
To remove events from a flight recording file:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]scrub\f[R] [\f[I]options\f[R]] \f[I]file\f[R]
|
||||
.PP
|
||||
To assemble chunk files into a flight recording file:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]assemble\f[R] \f[I]repository\f[R] \f[I]file\f[R]
|
||||
.PP
|
||||
To disassemble a flight recording file into chunk files:
|
||||
.PP
|
||||
\f[V]jfr\f[R] \f[V]disassmble\f[R] [\f[I]options\f[R]] \f[I]file\f[R]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
Optional: Specifies command-line options separated by spaces.
|
||||
See the individual subcomponent sections for descriptions of the
|
||||
available options.
|
||||
.TP
|
||||
\f[I]file\f[R]
|
||||
Specifies the name of the target flight recording file (\f[V].jfr\f[R]).
|
||||
.TP
|
||||
\f[I]repository\f[R]
|
||||
Specifies the location of the chunk files which are to be assembled into
|
||||
a flight recording.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jfr\f[R] command provides a tool for interacting with flight
|
||||
recorder files (\f[V].jfr\f[R]).
|
||||
The main function is to filter, summarize and output flight recording
|
||||
files into human readable format.
|
||||
There is also support for scrubbing, merging and splitting recording
|
||||
files.
|
||||
.PP
|
||||
Flight recording files are created and saved as binary formatted files.
|
||||
Having a tool that can extract the contents from a flight recording and
|
||||
manipulate the contents and translate them into human readable format
|
||||
helps developers to debug performance issues with Java applications.
|
||||
.SS Subcommands
|
||||
.PP
|
||||
The \f[V]jfr\f[R] command has several subcommands:
|
||||
.IP \[bu] 2
|
||||
\f[V]print\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]view\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]configure\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]metadata\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]summary\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]scrub\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]assemble\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]disassemble\f[R]
|
||||
.SS \f[V]jfr print\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr print\f[R] to print the contents of a flight recording file
|
||||
to standard out.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr print\f[R] [\f[V]--xml\f[R]|\f[V]--json\f[R]]
|
||||
[\f[V]--categories\f[R] <\f[I]filters\f[R]>] [\f[V]--events\f[R]
|
||||
<\f[I]filters\f[R]>] [\f[V]--stack-depth\f[R] <\f[I]depth\f[R]>]
|
||||
<\f[I]file\f[R]>
|
||||
.PP
|
||||
where:
|
||||
.TP
|
||||
\f[V]--xml\f[R]
|
||||
Print the recording in XML format.
|
||||
.TP
|
||||
\f[V]--json\f[R]
|
||||
Print the recording in JSON format.
|
||||
.TP
|
||||
\f[V]--categories\f[R] <\f[I]filters\f[R]>
|
||||
Select events matching a category name.
|
||||
The filter is a comma-separated list of names, simple and/or qualified,
|
||||
and/or quoted glob patterns.
|
||||
.TP
|
||||
\f[V]--events\f[R] <\f[I]filters\f[R]>
|
||||
Select events matching an event name.
|
||||
The filter is a comma-separated list of names, simple and/or qualified,
|
||||
and/or quoted glob patterns.
|
||||
.TP
|
||||
\f[V]--stack-depth\f[R] <\f[I]depth\f[R]>
|
||||
Number of frames in stack traces, by default 5.
|
||||
.TP
|
||||
<\f[I]file\f[R]>
|
||||
Location of the recording file (\f[V].jfr\f[R])
|
||||
.PP
|
||||
The default format for printing the contents of the flight recording
|
||||
file is human readable form unless either \f[V]xml\f[R] or
|
||||
\f[V]json\f[R] is specified.
|
||||
These options provide machine-readable output that can be further parsed
|
||||
or processed by user created scripts.
|
||||
.PP
|
||||
Use \f[V]jfr --help print\f[R] to see example usage of filters.
|
||||
.PP
|
||||
To reduce the amount of data displayed, it is possible to filter out
|
||||
events or categories of events.
|
||||
The filter operates on the symbolic name of an event, set by using the
|
||||
\f[V]\[at]Name\f[R] annotation, or the category name, set by using the
|
||||
\f[V]\[at]Category\f[R] annotation.
|
||||
If multiple filters are used, events from both filters will be included.
|
||||
If no filter is used, all the events will be printed.
|
||||
If a combination of a category filter and event filter is used, the
|
||||
selected events will be the union of the two filters.
|
||||
.PP
|
||||
For example, to show all GC events and the CPULoad event, the following
|
||||
command could be used:
|
||||
.PP
|
||||
\f[V]jfr print --categories GC --events CPULoad recording.jfr\f[R]
|
||||
.PP
|
||||
Event values are formatted according to the content types that are being
|
||||
used.
|
||||
For example, a field with the \f[V]jdk.jfr.Percentage\f[R] annotation
|
||||
that has the value 0.52 is formatted as 52%.
|
||||
.PP
|
||||
Stack traces are by default truncated to 5 frames, but the number can be
|
||||
increased/decreased using the \f[V]--stack-depth\f[R] command-line
|
||||
option.
|
||||
.SS \f[V]jfr view\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr view\f[R] to aggregate and display event data on standard
|
||||
out.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr view\f[R] [\f[V]--verbose\f[R]] [\f[V]--width\f[R]
|
||||
<\f[I]integer\f[R]>] [\f[V]--truncate\f[R] <\f[I]mode\f[R]>]
|
||||
[\f[V]--cell-height\f[R] <\f[I]integer\f[R]>] <\f[I]view\f[R]>
|
||||
<\f[I]file\f[R]>
|
||||
.PP
|
||||
where:
|
||||
.TP
|
||||
\f[V]--verbose\f[R]
|
||||
Displays the query that makes up the view.
|
||||
.TP
|
||||
\f[V]--width\f[R] <\f[I]integer\f[R]>
|
||||
The width of the view in characters.
|
||||
Default value depends on the view.
|
||||
.TP
|
||||
\f[V]--truncate\f[R] <\f[I]mode\f[R]>
|
||||
How to truncate content that exceeds space in a table cell.
|
||||
Mode can be \[aq]beginning\[aq] or \[aq]end\[aq].
|
||||
Default value is \[aq]end\[aq].
|
||||
.TP
|
||||
\f[V]--cell-height\f[R] <\f[I]integer\f[R]>
|
||||
Maximum number of rows in a table cell.
|
||||
Default value depends on the view.
|
||||
.TP
|
||||
<\f[I]view\f[R]>
|
||||
Name of the view or event type to display.
|
||||
Use \f[V]jfr --help view\f[R] to see a list of available views.
|
||||
.TP
|
||||
<\f[I]file\f[R]>
|
||||
Location of the recording file (.jfr)
|
||||
.PP
|
||||
The <\f[I]view\f[R]> parameter can be an event type name.
|
||||
Use the \f[V]jfr view types <file>\f[R] to see a list.
|
||||
To display all views, use \f[V]jfr view all-views <file>\f[R].
|
||||
To display all events, use \f[V]jfr view all-events <file>\f[R].
|
||||
.SS \f[V]jfr configure\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr configure\f[R] to configure a .jfc settings file.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr configure\f[R] [--interactive] [--verbose] [--input ] [--output
|
||||
] [option=value]* [event-setting=value]*
|
||||
.TP
|
||||
\f[V]--interactive\f[R]
|
||||
Interactive mode where the configuration is determined by a set of
|
||||
questions.
|
||||
.TP
|
||||
\f[V]--verbose\f[R]
|
||||
Displays the modified settings.
|
||||
.TP
|
||||
\f[V]--input\f[R] <\f[I]files\f[R]>
|
||||
A comma-separated list of .jfc files from which the new configuration is
|
||||
based.
|
||||
If no file is specified, the default file in the JDK is used
|
||||
(default.jfc).
|
||||
If \[aq]none\[aq] is specified, the new configuration starts empty.
|
||||
.TP
|
||||
\f[V]--output\f[R] <\f[I]file\f[R]>
|
||||
The filename of the generated output file.
|
||||
If not specified, the filename custom.jfc will be used.
|
||||
.TP
|
||||
\f[I]option=value\f[R]
|
||||
The option value to modify.
|
||||
To see available options, use \f[V]jfr help configure\f[R]
|
||||
.TP
|
||||
\f[I]event-setting=value\f[R]
|
||||
The event setting value to modify.
|
||||
Use the form:
|
||||
<\f[I]event-name\f[R]>#<\f[I]setting-name\f[R]>=<\f[I]value\f[R]> To add
|
||||
a new event setting, prefix the event name with \[aq]+\[aq].
|
||||
.PP
|
||||
The whitespace delimiter can be omitted for timespan values, i.e.
|
||||
20ms.
|
||||
For more information about the settings syntax, see Javadoc of the
|
||||
jdk.jfr package.
|
||||
.SS \f[V]jfr metadata\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr metadata\f[R] to display information about events, such as
|
||||
event names, categories and field layout within a flight recording file.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr metadata\f[R] [--categories ] [--events ] []
|
||||
.TP
|
||||
\f[V]--categories\f[R] <\f[I]filter\f[R]>
|
||||
Select events matching a category name.
|
||||
The filter is a comma-separated list of names, simple and/or qualified,
|
||||
and/or quoted glob patterns.
|
||||
.TP
|
||||
\f[V]--events\f[R] <\f[I]filter\f[R]>
|
||||
Select events matching an event name.
|
||||
The filter is a comma-separated list of names, simple and/or qualified,
|
||||
and/or quoted glob patterns.
|
||||
.TP
|
||||
<\f[I]file\f[R]>
|
||||
Location of the recording file (.jfr)
|
||||
.PP
|
||||
If the parameter is omitted, metadata from the JDK where the
|
||||
\[aq]jfr\[aq] tool is located will be used.
|
||||
.SS \f[V]jfr summary\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr summary\f[R] to print statistics for a recording.
|
||||
For example, a summary can illustrate the number of recorded events and
|
||||
how much disk space they used.
|
||||
This is useful for troubleshooting and understanding the impact of event
|
||||
settings.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr summary\f[R] <\f[I]file\f[R]>
|
||||
.PP
|
||||
where:
|
||||
.TP
|
||||
<\f[I]file\f[R]>
|
||||
Location of the flight recording file (\f[V].jfr\f[R])
|
||||
.SS \f[V]jfr scrub\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr scrub\f[R] to remove sensitive contents from a file or to
|
||||
reduce its size.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr scrub\f[R] [--include-events <\f[I]filter\f[R]>]
|
||||
[--exclude-events <\f[I]filter\f[R]>] [--include-categories
|
||||
<\f[I]filter\f[R]>] [--exclude-categories <\f[I]filter\f[R]>]
|
||||
[--include-threads <\f[I]filter\f[R]>] [--exclude-threads
|
||||
<\f[I]filter\f[R]>] <\f[I]input-file\f[R]> [<\f[I]output-file\f[R]>]
|
||||
.TP
|
||||
\f[V]--include-events\f[R] <\f[I]filter\f[R]>
|
||||
Select events matching an event name.
|
||||
.TP
|
||||
\f[V]--exclude-events\f[R] <\f[I]filter\f[R]>
|
||||
Exclude events matching an event name.
|
||||
.TP
|
||||
\f[V]--include-categories\f[R] <\f[I]filter\f[R]>
|
||||
Select events matching a category name.
|
||||
.TP
|
||||
\f[V]--exclude-categories\f[R] <\f[I]filter\f[R]>
|
||||
Exclude events matching a category name.
|
||||
.TP
|
||||
\f[V]--include-threads\f[R] <\f[I]filter\f[R]>
|
||||
Select events matching a thread name.
|
||||
.TP
|
||||
\f[V]--exclude-threads\f[R] <\f[I]filter\f[R]>
|
||||
Exclude events matching a thread name.
|
||||
.TP
|
||||
<\f[I]input-file\f[R]>
|
||||
The input file to read events from.
|
||||
.TP
|
||||
<\f[I]output-file\f[R]>
|
||||
The output file to write filter events to.
|
||||
If no file is specified, it will be written to the same path as the
|
||||
input file, but with \[dq]-scrubbed\[dq] appended to the filename.
|
||||
.PP
|
||||
The filter is a comma-separated list of names, simple and/or qualified,
|
||||
and/or quoted glob patterns.
|
||||
If multiple filters are used, they are applied in the specified order.
|
||||
.SS \f[V]jfr assemble\f[R] subcommand
|
||||
.PP
|
||||
Use jfr \f[V]assemble\f[R] to assemble chunk files into a recording
|
||||
file.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr assemble\f[R] <\f[I]repository\f[R]> <\f[I]file\f[R]>
|
||||
.PP
|
||||
where:
|
||||
.TP
|
||||
<\f[I]repository\f[R]>
|
||||
Directory where the repository containing chunk files is located.
|
||||
.TP
|
||||
<\f[I]file\f[R]>
|
||||
Location of the flight recording file (\f[V].jfr\f[R]).
|
||||
.PP
|
||||
Flight recording information is written in chunks.
|
||||
A chunk contains all of the information necessary for parsing.
|
||||
A chunk typically contains events useful for troubleshooting.
|
||||
If a JVM should crash, these chunks can be recovered and used to create
|
||||
a flight recording file using this \f[V]jfr assemble\f[R] command.
|
||||
These chunk files are concatenated in chronological order and chunk
|
||||
files that are not finished (.part) are excluded.
|
||||
.SS \f[V]jfr disassemble\f[R] subcommand
|
||||
.PP
|
||||
Use \f[V]jfr disassemble\f[R] to decompose a flight recording file into
|
||||
its chunk file pieces.
|
||||
.PP
|
||||
The syntax is:
|
||||
.PP
|
||||
\f[V]jfr disassemble\f[R] [\f[V]--max-chunks\f[R] <\f[I]chunks\f[R]>]
|
||||
[\f[V]--output\f[R] <\f[I]directory\f[R]>] <\f[I]file\f[R]>
|
||||
.PP
|
||||
where:
|
||||
.TP
|
||||
\f[V]--output\f[R] <\f[I]directory\f[R]>
|
||||
The location to write the disassembled file, by default the current
|
||||
directory
|
||||
.TP
|
||||
\f[V]--max-chunks\f[R] <\f[I]chunks\f[R]>
|
||||
Maximum number of chunks per file, by default 5.
|
||||
The chunk size varies, but is typically around 15 MB.
|
||||
.TP
|
||||
\f[V]--max-size\f[R] <\f[I]size\f[R]>
|
||||
Maximum number of bytes per file.
|
||||
.TP
|
||||
<\f[I]file\f[R]>
|
||||
Location of the flight recording file (\f[V].jfr\f[R])
|
||||
.PP
|
||||
This function can be useful for repairing a broken file by removing the
|
||||
faulty chunk.
|
||||
It can also be used to reduce the size of a file that is too large to
|
||||
transfer.
|
||||
The resulting chunk files are named \f[V]myfile_1.jfr\f[R],
|
||||
\f[V]myfile_2.jfr\f[R], etc.
|
||||
If needed, the resulting file names will be padded with zeros to
|
||||
preserve chronological order.
|
||||
For example, the chunk file name is \f[V]myfile_001.jfr\f[R] if the
|
||||
recording consists of more than 100 chunks.
|
||||
.SS jfr version and help subcommands
|
||||
.PP
|
||||
Use \f[V]jfr --version\f[R] or \f[V]jfr version\f[R] to view the version
|
||||
string information for this jfr command.
|
||||
.PP
|
||||
To get help on any of the jfr subcommands, use:
|
||||
.PP
|
||||
\f[V]jfr <--help|help>\f[R] [\f[I]subcommand\f[R]]
|
||||
.PP
|
||||
where:
|
||||
.PP
|
||||
[\f[I]subcommand\f[R]] is any of:
|
||||
.IP \[bu] 2
|
||||
\f[V]print\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]view\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]configure\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]metadata\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]summary\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]scrub\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]assemble\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]disassemble\f[R]
|
399
src/jdk.jfr/share/man/jfr.md
Normal file
399
src/jdk.jfr/share/man/jfr.md
Normal file
@ -0,0 +1,399 @@
|
||||
---
|
||||
# Copyright (c) 2019, 2023, 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.
|
||||
#
|
||||
|
||||
title: 'JFR(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jfr - print and manipulate Flight Recorder files
|
||||
|
||||
## Synopsis
|
||||
|
||||
To print the contents of a flight recording to standard out:
|
||||
|
||||
`jfr` `print` \[*options*\] *file*
|
||||
|
||||
To display aggregated event data on standard out:
|
||||
|
||||
`jfr` `view` \[*options*\] *file*
|
||||
|
||||
To configure a .jfc settings file:
|
||||
|
||||
`jfr` `configure` \[*options*\]
|
||||
|
||||
To print metadata information about flight recording events:
|
||||
|
||||
`jfr` `metadata` \[*file*\]
|
||||
|
||||
To view the summary statistics for a flight recording file:
|
||||
|
||||
`jfr` `summary` *file*
|
||||
|
||||
To remove events from a flight recording file:
|
||||
|
||||
`jfr` `scrub` \[*options*\] *file*
|
||||
|
||||
To assemble chunk files into a flight recording file:
|
||||
|
||||
`jfr` `assemble` *repository* *file*
|
||||
|
||||
To disassemble a flight recording file into chunk files:
|
||||
|
||||
`jfr` `disassmble` \[*options*\] *file*
|
||||
|
||||
*options*
|
||||
: Optional: Specifies command-line options separated by spaces. See the
|
||||
individual subcomponent sections for descriptions of the available options.
|
||||
|
||||
*file*
|
||||
: Specifies the name of the target flight recording file (`.jfr`).
|
||||
|
||||
*repository*
|
||||
: Specifies the location of the chunk files which are to be assembled into
|
||||
a flight recording.
|
||||
|
||||
## Description
|
||||
|
||||
The `jfr` command provides a tool for interacting with flight recorder files
|
||||
(`.jfr`). The main function is to filter, summarize and output flight
|
||||
recording files into human readable format. There is also support for scrubbing,
|
||||
merging and splitting recording files.
|
||||
|
||||
Flight recording files are created and saved as binary formatted files. Having
|
||||
a tool that can extract the contents from a flight recording and manipulate the
|
||||
contents and translate them into human readable format helps developers to debug
|
||||
performance issues with Java applications.
|
||||
|
||||
### Subcommands
|
||||
|
||||
The `jfr` command has several subcommands:
|
||||
|
||||
- `print`
|
||||
- `view`
|
||||
- `configure`
|
||||
- `metadata`
|
||||
- `summary`
|
||||
- `scrub`
|
||||
- `assemble`
|
||||
- `disassemble`
|
||||
|
||||
#### `jfr print` subcommand
|
||||
|
||||
Use `jfr print` to print the contents of a flight recording file to standard out.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr print` \[`--xml`|`--json`\]
|
||||
\[`--categories` <*filters*>\]
|
||||
\[`--events` <*filters*>\]
|
||||
\[`--stack-depth` <*depth*>\]
|
||||
<*file*>
|
||||
|
||||
where:
|
||||
|
||||
<a id="print-option-xml">`--xml`</a>
|
||||
: Print the recording in XML format.
|
||||
|
||||
<a id="print-option-json">`--json`</a>
|
||||
: Print the recording in JSON format.
|
||||
|
||||
<a id="print-option-categories">`--categories` <*filters*></a>
|
||||
: Select events matching a category name.
|
||||
The filter is a comma-separated list of names,
|
||||
simple and/or qualified, and/or quoted glob patterns.
|
||||
|
||||
<a id="print-option-events">`--events` <*filters*></a>
|
||||
: Select events matching an event name.
|
||||
The filter is a comma-separated list of names,
|
||||
simple and/or qualified, and/or quoted glob patterns.
|
||||
|
||||
<a id="print-option-stack-depth">`--stack-depth` <*depth*></a>
|
||||
: Number of frames in stack traces, by default 5.
|
||||
|
||||
<a id="print-option-file"><*file*></a>
|
||||
: Location of the recording file (`.jfr`)
|
||||
|
||||
The default format for printing the contents of the flight recording file is human
|
||||
readable form unless either `xml` or `json` is specified. These options provide
|
||||
machine-readable output that can be further parsed or processed by user created scripts.
|
||||
|
||||
Use `jfr --help print` to see example usage of filters.
|
||||
|
||||
To reduce the amount of data displayed, it is possible to filter out events or
|
||||
categories of events. The filter operates on the symbolic name of an event,
|
||||
set by using the `@Name` annotation, or the category name, set by using
|
||||
the `@Category` annotation. If multiple filters are used, events from both
|
||||
filters will be included. If no filter is used, all the events will be printed.
|
||||
If a combination of a category filter and event filter is used, the selected events
|
||||
will be the union of the two filters.
|
||||
|
||||
For example, to show all GC events and the CPULoad event, the following command could be used:
|
||||
|
||||
`jfr print --categories GC --events CPULoad recording.jfr`
|
||||
|
||||
Event values are formatted according to the content types that are being used.
|
||||
For example, a field with the `jdk.jfr.Percentage` annotation that has the value 0.52
|
||||
is formatted as 52%.
|
||||
|
||||
Stack traces are by default truncated to 5 frames, but the number can be
|
||||
increased/decreased using the `--stack-depth` command-line option.
|
||||
|
||||
#### `jfr view` subcommand
|
||||
|
||||
Use `jfr view` to aggregate and display event data on standard out.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr view` \[`--verbose`\]
|
||||
\[`--width` <*integer*>\]
|
||||
\[`--truncate` <*mode*>\]
|
||||
\[`--cell-height` <*integer*>\]
|
||||
<*view*>
|
||||
<*file*>
|
||||
|
||||
where:
|
||||
|
||||
<a id="view-option-verbose">`--verbose`</a>
|
||||
: Displays the query that makes up the view.
|
||||
|
||||
<a id="view-option-width">`--width` <*integer*></a>
|
||||
: The width of the view in characters. Default value depends on the view.
|
||||
|
||||
<a id="view-option-truncate">`--truncate` <*mode*></a>
|
||||
: How to truncate content that exceeds space in a table cell.
|
||||
Mode can be 'beginning' or 'end'. Default value is 'end'.
|
||||
|
||||
<a id="view-option-cell-height">`--cell-height` <*integer*></a>
|
||||
: Maximum number of rows in a table cell. Default value depends on the view.
|
||||
|
||||
<a id="view-option-view"><*view*></a>
|
||||
: Name of the view or event type to display. Use `jfr --help view` to see a
|
||||
list of available views.
|
||||
|
||||
<a id="view-option-file"><*file*></a>
|
||||
: Location of the recording file (.jfr)
|
||||
|
||||
The <*view*> parameter can be an event type name. Use the `jfr view types <file>`
|
||||
to see a list. To display all views, use `jfr view all-views <file>`. To display
|
||||
all events, use `jfr view all-events <file>`.
|
||||
|
||||
#### `jfr configure` subcommand
|
||||
|
||||
Use `jfr configure` to configure a .jfc settings file.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr configure` \[--interactive\] \[--verbose\]
|
||||
\[--input <files>\] [--output <file>\]
|
||||
\[option=value\]* \[event-setting=value\]*
|
||||
|
||||
<a id="configure-option-interactive">`--interactive`</a>
|
||||
: Interactive mode where the configuration is determined by a set of questions.
|
||||
|
||||
<a id="configure-option-verbose">`--verbose`</a>
|
||||
: Displays the modified settings.
|
||||
|
||||
<a id="configure-option-input">`--input` <*files*></a>
|
||||
: A comma-separated list of .jfc files from which the new configuration is
|
||||
based. If no file is specified, the default file in the JDK is used
|
||||
(default.jfc). If 'none' is specified, the new configuration starts empty.
|
||||
|
||||
<a id="configure-option-output">`--output` <*file*></a>
|
||||
: The filename of the generated output file. If not specified, the filename
|
||||
custom.jfc will be used.
|
||||
|
||||
<a id="configure-option-value">*option=value*</a>
|
||||
: The option value to modify. To see available options,
|
||||
use `jfr help configure`
|
||||
|
||||
<a id="configure-option-event-setting">*event-setting=value*</a>
|
||||
: The event setting value to modify. Use the form:
|
||||
<*event-name*>#<*setting-name*>=<*value*>
|
||||
To add a new event setting, prefix the event name with '+'.
|
||||
|
||||
The whitespace delimiter can be omitted for timespan values, i.e. 20ms. For
|
||||
more information about the settings syntax, see Javadoc of the jdk.jfr package.
|
||||
|
||||
#### `jfr metadata` subcommand
|
||||
|
||||
Use `jfr metadata` to display information about events, such as event
|
||||
names, categories and field layout within a flight recording file.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr metadata` \[--categories <filter>\]
|
||||
\[--events <filter>\]
|
||||
\[<file>\]
|
||||
|
||||
<a id="metadata-option-categories">`--categories` <*filter*></a>
|
||||
: Select events matching a category name. The filter is a comma-separated
|
||||
list of names, simple and/or qualified, and/or quoted glob patterns.
|
||||
|
||||
<a id="metadata-option-events">`--events` <*filter*></a>
|
||||
: Select events matching an event name. The filter is a comma-separated
|
||||
list of names, simple and/or qualified, and/or quoted glob patterns.
|
||||
|
||||
<a id="metadata-option-file"><*file*></a>
|
||||
: Location of the recording file (.jfr)
|
||||
|
||||
If the <file> parameter is omitted, metadata from the JDK where
|
||||
the 'jfr' tool is located will be used.
|
||||
|
||||
#### `jfr summary` subcommand
|
||||
|
||||
Use `jfr summary` to print statistics for a recording. For example, a summary can
|
||||
illustrate the number of recorded events and how much disk space they used. This
|
||||
is useful for troubleshooting and understanding the impact of event settings.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr summary` <*file*>
|
||||
|
||||
where:
|
||||
|
||||
<a id="summary-option-file"><*file*></a>
|
||||
: Location of the flight recording file (`.jfr`)
|
||||
|
||||
#### `jfr scrub` subcommand
|
||||
|
||||
Use `jfr scrub` to remove sensitive contents from a file or to reduce its size.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr scrub` \[--include-events <*filter*>\]
|
||||
\[--exclude-events <*filter*>\]
|
||||
\[--include-categories <*filter*>\]
|
||||
\[--exclude-categories <*filter*>\]
|
||||
\[--include-threads <*filter*>\]
|
||||
\[--exclude-threads <*filter*>\]
|
||||
<*input-file*>
|
||||
\[<*output-file*>\]
|
||||
|
||||
<a id="scrub-option-include-events">`--include-events` <*filter*></a>
|
||||
: Select events matching an event name.
|
||||
|
||||
<a id="scrub-option-exclude-events">`--exclude-events` <*filter*></a>
|
||||
: Exclude events matching an event name.
|
||||
|
||||
<a id="scrub-option-include-categories">`--include-categories` <*filter*></a>
|
||||
: Select events matching a category name.
|
||||
|
||||
<a id="scrub-option-exclude-categories">`--exclude-categories` <*filter*></a>
|
||||
: Exclude events matching a category name.
|
||||
|
||||
<a id="scrub-option-include-threads">`--include-threads` <*filter*></a>
|
||||
: Select events matching a thread name.
|
||||
|
||||
<a id="scrub-option-exclude-threads">`--exclude-threads` <*filter*></a>
|
||||
: Exclude events matching a thread name.
|
||||
|
||||
<a id="scrub-option-input-file"><*input-file*></a>
|
||||
: The input file to read events from.
|
||||
|
||||
<a id="scrub-option-output-file"><*output-file*></a>
|
||||
: The output file to write filter events to. If no file is specified,
|
||||
it will be written to the same path as the input file, but with
|
||||
"-scrubbed" appended to the filename.
|
||||
|
||||
The filter is a comma-separated list of names, simple and/or qualified,
|
||||
and/or quoted glob patterns. If multiple filters are used, they
|
||||
are applied in the specified order.
|
||||
|
||||
#### `jfr assemble` subcommand
|
||||
|
||||
Use jfr `assemble` to assemble chunk files into a recording file.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr assemble` <*repository*>
|
||||
<*file*>
|
||||
|
||||
where:
|
||||
|
||||
<a id="assemble-option-repository"><*repository*></a>
|
||||
: Directory where the repository containing chunk files is located.
|
||||
|
||||
<a id="assemble-option-file"><*file*></a>
|
||||
: Location of the flight recording file (`.jfr`).
|
||||
|
||||
Flight recording information is written in chunks. A chunk contains all of the information
|
||||
necessary for parsing. A chunk typically contains events useful for troubleshooting.
|
||||
If a JVM should crash, these chunks can be recovered and used to create a flight
|
||||
recording file using this `jfr assemble` command. These chunk files are concatenated in
|
||||
chronological order and chunk files that are not finished (.part) are excluded.
|
||||
|
||||
#### `jfr disassemble` subcommand
|
||||
|
||||
Use `jfr disassemble` to decompose a flight recording file into its chunk file pieces.
|
||||
|
||||
The syntax is:
|
||||
|
||||
`jfr disassemble` \[`--max-chunks` <*chunks*>\]
|
||||
\[`--output` <*directory*>\]
|
||||
<*file*>
|
||||
|
||||
where:
|
||||
|
||||
<a id="disassemble-option-output">`--output` <*directory*></a>
|
||||
: The location to write the disassembled file,
|
||||
by default the current directory
|
||||
|
||||
<a id="disassemble-option-max-chunks">`--max-chunks` <*chunks*></a>
|
||||
: Maximum number of chunks per file, by default 5.
|
||||
The chunk size varies, but is typically around 15 MB.
|
||||
|
||||
<a id="disassemble-option-max-size">`--max-size` <*size*></a>
|
||||
: Maximum number of bytes per file.
|
||||
|
||||
<a id="disassemble-option-file"><*file*></a>
|
||||
: Location of the flight recording file (`.jfr`)
|
||||
|
||||
This function can be useful for repairing a broken file by removing the faulty chunk.
|
||||
It can also be used to reduce the size of a file that is too large to transfer.
|
||||
The resulting chunk files are named `myfile_1.jfr`, `myfile_2.jfr`, etc. If needed, the
|
||||
resulting file names will be padded with zeros to preserve chronological order. For example,
|
||||
the chunk file name is `myfile_001.jfr` if the recording consists of more than 100 chunks.
|
||||
|
||||
#### jfr version and help subcommands
|
||||
|
||||
Use `jfr --version` or `jfr version` to view the version string information for this jfr command.
|
||||
|
||||
To get help on any of the jfr subcommands, use:
|
||||
|
||||
`jfr <--help|help>` \[*subcommand*\]
|
||||
|
||||
where:
|
||||
|
||||
\[*subcommand*\] is any of:
|
||||
|
||||
- `print`
|
||||
- `view`
|
||||
- `configure`
|
||||
- `metadata`
|
||||
- `summary`
|
||||
- `scrub`
|
||||
- `assemble`
|
||||
- `disassemble`
|
@ -1,409 +0,0 @@
|
||||
.\" Copyright (c) 2017, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JLINK" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jlink - assemble and optimize a set of modules and their dependencies
|
||||
into a custom runtime image
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jlink\f[R] [\f[I]options\f[R]] \f[V]--module-path\f[R]
|
||||
\f[I]modulepath\f[R] \f[V]--add-modules\f[R]
|
||||
\f[I]module\f[R][,\f[I]module\f[R]...]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
Command-line options separated by spaces.
|
||||
See \f[B]jlink Options\f[R].
|
||||
.TP
|
||||
\f[I]modulepath\f[R]
|
||||
The path where the \f[V]jlink\f[R] tool discovers observable modules.
|
||||
These modules can be modular JAR files, JMOD files, or exploded modules.
|
||||
.TP
|
||||
\f[I]module\f[R]
|
||||
The names of the modules to add to the runtime image.
|
||||
The \f[V]jlink\f[R] tool adds these modules and their transitive
|
||||
dependencies.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jlink\f[R] tool links a set of modules, along with their
|
||||
transitive dependences, to create a custom runtime image.
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
Developers are responsible for updating their custom runtime images.
|
||||
.SH JLINK OPTIONS
|
||||
.TP
|
||||
\f[V]--add-modules\f[R] \f[I]mod\f[R][\f[V],\f[R]\f[I]mod\f[R]...]
|
||||
Adds the named modules, \f[I]mod\f[R], to the default set of root
|
||||
modules.
|
||||
The default set of root modules is empty.
|
||||
.TP
|
||||
\f[V]--bind-services\f[R]
|
||||
Link service provider modules and their dependencies.
|
||||
.TP
|
||||
\f[V]-c ={0|1|2}\f[R] or \f[V]--compress={0|1|2}\f[R]
|
||||
Enable compression of resources:
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
\f[V]0\f[R]: No compression
|
||||
.IP \[bu] 2
|
||||
\f[V]1\f[R]: Constant string sharing
|
||||
.IP \[bu] 2
|
||||
\f[V]2\f[R]: ZIP
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--disable-plugin\f[R] \f[I]pluginname\f[R]
|
||||
Disables the specified plug-in.
|
||||
See \f[B]jlink Plug-ins\f[R] for the list of supported plug-ins.
|
||||
.TP
|
||||
\f[V]--endian\f[R] {\f[V]little\f[R]|\f[V]big\f[R]}
|
||||
Specifies the byte order of the generated image.
|
||||
The default value is the format of your system\[aq]s architecture.
|
||||
.TP
|
||||
\f[V]-h\f[R] or \f[V]--help\f[R]
|
||||
Prints the help message.
|
||||
.TP
|
||||
\f[V]--ignore-signing-information\f[R]
|
||||
Suppresses a fatal error when signed modular JARs are linked in the
|
||||
runtime image.
|
||||
The signature-related files of the signed modular JARs aren\[aq]t copied
|
||||
to the runtime image.
|
||||
.TP
|
||||
\f[V]--launcher\f[R] \f[I]command\f[R]\f[V]=\f[R]\f[I]module\f[R] or \f[V]--launcher\f[R] \f[I]command\f[R]\f[V]=\f[R]\f[I]module\f[R]\f[V]/\f[R]\f[I]main\f[R]
|
||||
Specifies the launcher command name for the module or the command name
|
||||
for the module and main class (the module and the main class names are
|
||||
separated by a slash (\f[V]/\f[R])).
|
||||
.TP
|
||||
\f[V]--limit-modules\f[R] \f[I]mod\f[R][\f[V],\f[R]\f[I]mod\f[R]...]
|
||||
Limits the universe of observable modules to those in the transitive
|
||||
closure of the named modules, \f[V]mod\f[R], plus the main module, if
|
||||
any, plus any further modules specified in the \f[V]--add-modules\f[R]
|
||||
option.
|
||||
.TP
|
||||
\f[V]--list-plugins\f[R]
|
||||
Lists available plug-ins, which you can access through command-line
|
||||
options; see \f[B]jlink Plug-ins\f[R].
|
||||
.TP
|
||||
\f[V]-p\f[R] or \f[V]--module-path\f[R] \f[I]modulepath\f[R]
|
||||
Specifies the module path.
|
||||
.RS
|
||||
.PP
|
||||
If this option is not specified, then the default module path is
|
||||
\f[V]$JAVA_HOME/jmods\f[R].
|
||||
This directory contains the \f[V]java.base\f[R] module and the other
|
||||
standard and JDK modules.
|
||||
If this option is specified but the \f[V]java.base\f[R] module cannot be
|
||||
resolved from it, then the \f[V]jlink\f[R] command appends
|
||||
\f[V]$JAVA_HOME/jmods\f[R] to the module path.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--no-header-files\f[R]
|
||||
Excludes header files.
|
||||
.TP
|
||||
\f[V]--no-man-pages\f[R]
|
||||
Excludes man pages.
|
||||
.TP
|
||||
\f[V]--output\f[R] \f[I]path\f[R]
|
||||
Specifies the location of the generated runtime image.
|
||||
.TP
|
||||
\f[V]--save-opts\f[R] \f[I]filename\f[R]
|
||||
Saves \f[V]jlink\f[R] options in the specified file.
|
||||
.TP
|
||||
\f[V]--suggest-providers\f[R] [\f[I]name\f[R]\f[V],\f[R] ...]
|
||||
Suggest providers that implement the given service types from the module
|
||||
path.
|
||||
.TP
|
||||
\f[V]--version\f[R]
|
||||
Prints version information.
|
||||
.TP
|
||||
\f[V]\[at]\f[R]\f[I]filename\f[R]
|
||||
Reads options from the specified file.
|
||||
.RS
|
||||
.PP
|
||||
An options file is a text file that contains the options and values that
|
||||
you would typically enter in a command prompt.
|
||||
Options may appear on one line or on several lines.
|
||||
You may not specify environment variables for path names.
|
||||
You may comment out lines by prefixing a hash symbol (\f[V]#\f[R]) to
|
||||
the beginning of the line.
|
||||
.PP
|
||||
The following is an example of an options file for the \f[V]jlink\f[R]
|
||||
command:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
#Wed Dec 07 00:40:19 EST 2016
|
||||
--module-path mlib
|
||||
--add-modules com.greetings
|
||||
--output greetingsapp
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.SH JLINK PLUG-INS
|
||||
.PP
|
||||
\f[B]Note:\f[R]
|
||||
.PP
|
||||
Plug-ins not listed in this section aren\[aq]t supported and are subject
|
||||
to change.
|
||||
.PP
|
||||
For plug-in options that require a \f[I]pattern-list\f[R], the value is
|
||||
a comma-separated list of elements, with each element using one the
|
||||
following forms:
|
||||
.IP \[bu] 2
|
||||
\f[I]glob-pattern\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]glob:\f[R]\f[I]glob-pattern\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]regex:\f[R]\f[I]regex-pattern\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]\[at]\f[R]\f[I]filename\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
\f[I]filename\f[R] is the name of a file that contains patterns to be
|
||||
used, one pattern per line.
|
||||
.RE
|
||||
.PP
|
||||
For a complete list of all available plug-ins, run the command
|
||||
\f[V]jlink --list-plugins\f[R].
|
||||
.SS Plugin \f[V]compress\f[R]
|
||||
.TP
|
||||
Options
|
||||
\f[V]--compress=\f[R]{\f[V]0\f[R]|\f[V]1\f[R]|\f[V]2\f[R]}[\f[V]:filter=\f[R]\f[I]pattern-list\f[R]]
|
||||
.TP
|
||||
Description
|
||||
Compresses all resources in the output image.
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
Level 0: No compression
|
||||
.IP \[bu] 2
|
||||
Level 1: Constant string sharing
|
||||
.IP \[bu] 2
|
||||
Level 2: ZIP
|
||||
.PP
|
||||
An optional \f[I]pattern-list\f[R] filter can be specified to list the
|
||||
pattern of files to include.
|
||||
.RE
|
||||
.SS Plugin \f[V]include-locales\f[R]
|
||||
.TP
|
||||
Options
|
||||
\f[V]--include-locales=\f[R]\f[I]langtag\f[R][\f[V],\f[R]\f[I]langtag\f[R]]*
|
||||
.TP
|
||||
Description
|
||||
Includes the list of locales where \f[I]langtag\f[R] is a BCP 47
|
||||
language tag.
|
||||
This option supports locale matching as defined in RFC 4647.
|
||||
Ensure that you add the module jdk.localedata when using this option.
|
||||
.RS
|
||||
.PP
|
||||
Example:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]--add-modules jdk.localedata --include-locales=en,ja,*-IN\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.SS Plugin \f[V]order-resources\f[R]
|
||||
.TP
|
||||
Options
|
||||
\f[V]--order-resources=\f[R]\f[I]pattern-list\f[R]
|
||||
.TP
|
||||
Description
|
||||
Orders the specified paths in priority order.
|
||||
If \f[V]\[at]\f[R]\f[I]filename\f[R] is specified, then each line in
|
||||
\f[I]pattern-list\f[R] must be an exact match for the paths to be
|
||||
ordered.
|
||||
.RS
|
||||
.PP
|
||||
Example:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]--order-resources=/module-info.class,\[at]classlist,/java.base/java/lang/\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.SS Plugin \f[V]strip-debug\f[R]
|
||||
.TP
|
||||
Options
|
||||
\f[V]--strip-debug\f[R]
|
||||
.TP
|
||||
Description
|
||||
Strips debug information from the output image.
|
||||
.SS Plugin \f[V]generate-cds-archive\f[R]
|
||||
.TP
|
||||
Options
|
||||
\f[V]--generate-cds-archive\f[R]
|
||||
.TP
|
||||
Description
|
||||
Generate CDS archive if the runtime image supports the CDS feature.
|
||||
.SH JLINK EXAMPLES
|
||||
.PP
|
||||
The following command creates a runtime image in the directory
|
||||
\f[V]greetingsapp\f[R].
|
||||
This command links the module \f[V]com.greetings\f[R], whose module
|
||||
definition is contained in the directory \f[V]mlib\f[R].
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jlink --module-path mlib --add-modules com.greetings --output greetingsapp
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following command lists the modules in the runtime image
|
||||
\f[V]greetingsapp\f[R]:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
greetingsapp/bin/java --list-modules
|
||||
com.greetings
|
||||
java.base\[at]11
|
||||
java.logging\[at]11
|
||||
org.astro\[at]1.0
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following command creates a runtime image in the directory
|
||||
compressedrt that\[aq]s stripped of debug symbols, uses compression to
|
||||
reduce space, and includes French language locale information:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jlink --add-modules jdk.localedata --strip-debug --compress=2 --include-locales=fr --output compressedrt
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following example compares the size of the runtime image
|
||||
\f[V]compressedrt\f[R] with \f[V]fr_rt\f[R], which isn\[aq]t stripped of
|
||||
debug symbols and doesn\[aq]t use compression:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jlink --add-modules jdk.localedata --include-locales=fr --output fr_rt
|
||||
|
||||
du -sh ./compressedrt ./fr_rt
|
||||
23M ./compressedrt
|
||||
36M ./fr_rt
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following example lists the providers that implement
|
||||
\f[V]java.security.Provider\f[R]:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jlink --suggest-providers java.security.Provider
|
||||
|
||||
Suggested providers:
|
||||
java.naming provides java.security.Provider used by java.base
|
||||
java.security.jgss provides java.security.Provider used by java.base
|
||||
java.security.sasl provides java.security.Provider used by java.base
|
||||
java.smartcardio provides java.security.Provider used by java.base
|
||||
java.xml.crypto provides java.security.Provider used by java.base
|
||||
jdk.crypto.cryptoki provides java.security.Provider used by java.base
|
||||
jdk.crypto.ec provides java.security.Provider used by java.base
|
||||
jdk.crypto.mscapi provides java.security.Provider used by java.base
|
||||
jdk.security.jgss provides java.security.Provider used by java.base
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following example creates a custom runtime image named
|
||||
\f[V]mybuild\f[R] that includes only \f[V]java.naming\f[R] and
|
||||
\f[V]jdk.crypto.cryptoki\f[R] and their dependencies but no other
|
||||
providers.
|
||||
Note that these dependencies must exist in the module path:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jlink --add-modules java.naming,jdk.crypto.cryptoki --output mybuild
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following command is similar to the one that creates a runtime image
|
||||
named \f[V]greetingsapp\f[R], except that it will link the modules
|
||||
resolved from root modules with service binding; see the
|
||||
\f[B]\f[VB]Configuration.resolveAndBind\f[B]\f[R] method.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jlink --module-path mlib --add-modules com.greetings --output greetingsapp --bind-services
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The following command lists the modules in the runtime image
|
||||
greetingsapp created by this command:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
greetingsapp/bin/java --list-modules
|
||||
com.greetings
|
||||
java.base\[at]11
|
||||
java.compiler\[at]11
|
||||
java.datatransfer\[at]11
|
||||
java.desktop\[at]11
|
||||
java.logging\[at]11
|
||||
java.management\[at]11
|
||||
java.management.rmi\[at]11
|
||||
java.naming\[at]11
|
||||
java.prefs\[at]11
|
||||
java.rmi\[at]11
|
||||
java.security.jgss\[at]11
|
||||
java.security.sasl\[at]11
|
||||
java.smartcardio\[at]11
|
||||
java.xml\[at]11
|
||||
java.xml.crypto\[at]11
|
||||
jdk.accessibility\[at]11
|
||||
jdk.charsets\[at]11
|
||||
jdk.compiler\[at]11
|
||||
jdk.crypto.cryptoki\[at]11
|
||||
jdk.crypto.ec\[at]11
|
||||
jdk.crypto.mscapi\[at]11
|
||||
jdk.internal.opt\[at]11
|
||||
jdk.jartool\[at]11
|
||||
jdk.javadoc\[at]11
|
||||
jdk.jdeps\[at]11
|
||||
jdk.jfr\[at]11
|
||||
jdk.jlink\[at]11
|
||||
jdk.localedata\[at]11
|
||||
jdk.management\[at]11
|
||||
jdk.management.jfr\[at]11
|
||||
jdk.naming.dns\[at]11
|
||||
jdk.naming.rmi\[at]11
|
||||
jdk.security.auth\[at]11
|
||||
jdk.security.jgss\[at]11
|
||||
jdk.zipfs\[at]11
|
||||
org.astro\[at]1.0
|
||||
\f[R]
|
||||
.fi
|
347
src/jdk.jlink/share/man/jlink.md
Normal file
347
src/jdk.jlink/share/man/jlink.md
Normal file
@ -0,0 +1,347 @@
|
||||
---
|
||||
# Copyright (c) 2017, 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.
|
||||
#
|
||||
|
||||
title: 'JLINK(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jlink - assemble and optimize a set of modules and their dependencies into a
|
||||
custom runtime image
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jlink` \[*options*\] `--module-path` *modulepath* `--add-modules` *module*\[,*module*...\]
|
||||
|
||||
*options*
|
||||
: Command-line options separated by spaces. See [jlink Options].
|
||||
|
||||
*modulepath*
|
||||
: The path where the `jlink` tool discovers observable modules. These modules
|
||||
can be modular JAR files, JMOD files, or exploded modules.
|
||||
|
||||
*module*
|
||||
: The names of the modules to add to the runtime image. The `jlink` tool adds
|
||||
these modules and their transitive dependencies.
|
||||
|
||||
## Description
|
||||
|
||||
The `jlink` tool links a set of modules, along with their transitive
|
||||
dependences, to create a custom runtime image.
|
||||
|
||||
**Note:**
|
||||
|
||||
Developers are responsible for updating their custom runtime images.
|
||||
|
||||
## jlink Options
|
||||
|
||||
`--add-modules` *mod*\[`,`*mod*...\]
|
||||
: Adds the named modules, *mod*, to the default set of root modules. The
|
||||
default set of root modules is empty.
|
||||
|
||||
`--bind-services`
|
||||
: Link service provider modules and their dependencies.
|
||||
|
||||
`-c ={0|1|2}` or `--compress={0|1|2}`
|
||||
: Enable compression of resources:
|
||||
|
||||
- `0`: No compression
|
||||
- `1`: Constant string sharing
|
||||
- `2`: ZIP
|
||||
|
||||
`--disable-plugin` *pluginname*
|
||||
: Disables the specified plug-in. See [jlink Plug-ins] for the list of
|
||||
supported plug-ins.
|
||||
|
||||
`--endian` {`little`\|`big`}
|
||||
: Specifies the byte order of the generated image. The default value is the
|
||||
format of your system's architecture.
|
||||
|
||||
`-h` or `--help`
|
||||
: Prints the help message.
|
||||
|
||||
`--ignore-signing-information`
|
||||
: Suppresses a fatal error when signed modular JARs are linked in the runtime
|
||||
image. The signature-related files of the signed modular JARs aren't copied
|
||||
to the runtime image.
|
||||
|
||||
`--launcher` *command*`=`*module* or `--launcher` *command*`=`*module*`/`*main*
|
||||
: Specifies the launcher command name for the module or the command name for
|
||||
the module and main class (the module and the main class names are
|
||||
separated by a slash (`/`)).
|
||||
|
||||
`--limit-modules` *mod*\[`,`*mod*...\]
|
||||
: Limits the universe of observable modules to those in the transitive
|
||||
closure of the named modules, `mod`, plus the main module, if any, plus any
|
||||
further modules specified in the `--add-modules` option.
|
||||
|
||||
`--list-plugins`
|
||||
: Lists available plug-ins, which you can access through command-line
|
||||
options; see [jlink Plug-ins].
|
||||
|
||||
`-p` or `--module-path` *modulepath*
|
||||
: Specifies the module path.
|
||||
|
||||
If this option is not specified, then the default module path is
|
||||
`$JAVA_HOME/jmods`. This directory contains the `java.base` module and the
|
||||
other standard and JDK modules. If this option is specified but the
|
||||
`java.base` module cannot be resolved from it, then the `jlink` command
|
||||
appends `$JAVA_HOME/jmods` to the module path.
|
||||
|
||||
`--no-header-files`
|
||||
: Excludes header files.
|
||||
|
||||
`--no-man-pages`
|
||||
: Excludes man pages.
|
||||
|
||||
`--output` *path*
|
||||
: Specifies the location of the generated runtime image.
|
||||
|
||||
`--save-opts` *filename*
|
||||
: Saves `jlink` options in the specified file.
|
||||
|
||||
`--suggest-providers` \[*name*`,` ...\]
|
||||
: Suggest providers that implement the given service types from the module
|
||||
path.
|
||||
|
||||
`--version`
|
||||
: Prints version information.
|
||||
|
||||
`@`*filename*
|
||||
: Reads options from the specified file.
|
||||
|
||||
An options file is a text file that contains the options and values that
|
||||
you would typically enter in a command prompt. Options may appear on one
|
||||
line or on several lines. You may not specify environment variables for
|
||||
path names. You may comment out lines by prefixing a hash symbol (`#`) to
|
||||
the beginning of the line.
|
||||
|
||||
The following is an example of an options file for the `jlink` command:
|
||||
|
||||
```
|
||||
#Wed Dec 07 00:40:19 EST 2016
|
||||
--module-path mlib
|
||||
--add-modules com.greetings
|
||||
--output greetingsapp
|
||||
```
|
||||
|
||||
## jlink Plug-ins
|
||||
|
||||
**Note:**
|
||||
|
||||
Plug-ins not listed in this section aren't supported and are subject to change.
|
||||
|
||||
For plug-in options that require a *pattern-list*, the value is a
|
||||
comma-separated list of elements, with each element using one the following
|
||||
forms:
|
||||
|
||||
- *glob-pattern*
|
||||
- `glob:`*glob-pattern*
|
||||
- `regex:`*regex-pattern*
|
||||
- `@`*filename*
|
||||
- *filename* is the name of a file that contains patterns to be used, one
|
||||
pattern per line.
|
||||
|
||||
For a complete list of all available plug-ins, run the command
|
||||
`jlink --list-plugins`.
|
||||
|
||||
### Plugin `compress`
|
||||
|
||||
Options
|
||||
: `--compress=`{`0`\|`1`\|`2`}\[`:filter=`*pattern-list*\]
|
||||
|
||||
Description
|
||||
: Compresses all resources in the output image.
|
||||
|
||||
- Level 0: No compression
|
||||
- Level 1: Constant string sharing
|
||||
- Level 2: ZIP
|
||||
|
||||
An optional *pattern-list* filter can be specified to list the pattern of
|
||||
files to include.
|
||||
|
||||
### Plugin `include-locales`
|
||||
|
||||
Options
|
||||
: `--include-locales=`*langtag*\[`,`*langtag*\]\*
|
||||
|
||||
Description
|
||||
: Includes the list of locales where *langtag* is a BCP 47 language tag.
|
||||
This option supports locale matching as defined in RFC 4647. Ensure that
|
||||
you add the module jdk.localedata when using this option.
|
||||
|
||||
Example:
|
||||
|
||||
> `--add-modules jdk.localedata --include-locales=en,ja,*-IN`
|
||||
|
||||
### Plugin `order-resources`
|
||||
|
||||
Options
|
||||
: `--order-resources=`*pattern-list*
|
||||
|
||||
Description
|
||||
: Orders the specified paths in priority order. If `@`*filename* is
|
||||
specified, then each line in *pattern-list* must be an exact match for the
|
||||
paths to be ordered.
|
||||
|
||||
Example:
|
||||
|
||||
> `--order-resources=/module-info.class,@classlist,/java.base/java/lang/`
|
||||
|
||||
### Plugin `strip-debug`
|
||||
|
||||
Options
|
||||
: `--strip-debug`
|
||||
|
||||
Description
|
||||
: Strips debug information from the output image.
|
||||
|
||||
### Plugin `generate-cds-archive`
|
||||
|
||||
Options
|
||||
: `--generate-cds-archive`
|
||||
|
||||
Description
|
||||
: Generate CDS archive if the runtime image supports the CDS feature.
|
||||
|
||||
## jlink Examples
|
||||
|
||||
The following command creates a runtime image in the directory `greetingsapp`.
|
||||
This command links the module `com.greetings`, whose module definition is
|
||||
contained in the directory `mlib`.
|
||||
|
||||
```
|
||||
jlink --module-path mlib --add-modules com.greetings --output greetingsapp
|
||||
```
|
||||
|
||||
The following command lists the modules in the runtime image `greetingsapp`:
|
||||
|
||||
```
|
||||
greetingsapp/bin/java --list-modules
|
||||
com.greetings
|
||||
java.base@11
|
||||
java.logging@11
|
||||
org.astro@1.0
|
||||
```
|
||||
|
||||
The following command creates a runtime image in the directory compressedrt
|
||||
that's stripped of debug symbols, uses compression to reduce space, and
|
||||
includes French language locale information:
|
||||
|
||||
```
|
||||
jlink --add-modules jdk.localedata --strip-debug --compress=2 --include-locales=fr --output compressedrt
|
||||
```
|
||||
|
||||
The following example compares the size of the runtime image `compressedrt`
|
||||
with `fr_rt`, which isn't stripped of debug symbols and doesn't use
|
||||
compression:
|
||||
|
||||
```
|
||||
jlink --add-modules jdk.localedata --include-locales=fr --output fr_rt
|
||||
|
||||
du -sh ./compressedrt ./fr_rt
|
||||
23M ./compressedrt
|
||||
36M ./fr_rt
|
||||
```
|
||||
|
||||
The following example lists the providers that implement
|
||||
`java.security.Provider`:
|
||||
|
||||
```
|
||||
jlink --suggest-providers java.security.Provider
|
||||
|
||||
Suggested providers:
|
||||
java.naming provides java.security.Provider used by java.base
|
||||
java.security.jgss provides java.security.Provider used by java.base
|
||||
java.security.sasl provides java.security.Provider used by java.base
|
||||
java.smartcardio provides java.security.Provider used by java.base
|
||||
java.xml.crypto provides java.security.Provider used by java.base
|
||||
jdk.crypto.cryptoki provides java.security.Provider used by java.base
|
||||
jdk.crypto.ec provides java.security.Provider used by java.base
|
||||
jdk.crypto.mscapi provides java.security.Provider used by java.base
|
||||
jdk.security.jgss provides java.security.Provider used by java.base
|
||||
```
|
||||
|
||||
The following example creates a custom runtime image named `mybuild` that
|
||||
includes only `java.naming` and `jdk.crypto.cryptoki` and their dependencies but no
|
||||
other providers. Note that these dependencies must exist in the module path:
|
||||
|
||||
```
|
||||
jlink --add-modules java.naming,jdk.crypto.cryptoki --output mybuild
|
||||
```
|
||||
|
||||
The following command is similar to the one that creates a runtime image named
|
||||
`greetingsapp`, except that it will link the modules resolved from root modules
|
||||
with service binding; see the [`Configuration.resolveAndBind`](
|
||||
../../api/java.base/java/lang/module/Configuration.html#resolveAndBind(java.lang.module.ModuleFinder,java.util.List,java.lang.module.ModuleFinder,java.util.Collection))
|
||||
method.
|
||||
|
||||
```
|
||||
jlink --module-path mlib --add-modules com.greetings --output greetingsapp --bind-services
|
||||
```
|
||||
|
||||
The following command lists the modules in the runtime image greetingsapp
|
||||
created by this command:
|
||||
|
||||
```
|
||||
greetingsapp/bin/java --list-modules
|
||||
com.greetings
|
||||
java.base@11
|
||||
java.compiler@11
|
||||
java.datatransfer@11
|
||||
java.desktop@11
|
||||
java.logging@11
|
||||
java.management@11
|
||||
java.management.rmi@11
|
||||
java.naming@11
|
||||
java.prefs@11
|
||||
java.rmi@11
|
||||
java.security.jgss@11
|
||||
java.security.sasl@11
|
||||
java.smartcardio@11
|
||||
java.xml@11
|
||||
java.xml.crypto@11
|
||||
jdk.accessibility@11
|
||||
jdk.charsets@11
|
||||
jdk.compiler@11
|
||||
jdk.crypto.cryptoki@11
|
||||
jdk.crypto.ec@11
|
||||
jdk.crypto.mscapi@11
|
||||
jdk.internal.opt@11
|
||||
jdk.jartool@11
|
||||
jdk.javadoc@11
|
||||
jdk.jdeps@11
|
||||
jdk.jfr@11
|
||||
jdk.jlink@11
|
||||
jdk.localedata@11
|
||||
jdk.management@11
|
||||
jdk.management.jfr@11
|
||||
jdk.naming.dns@11
|
||||
jdk.naming.rmi@11
|
||||
jdk.security.auth@11
|
||||
jdk.security.jgss@11
|
||||
jdk.zipfs@11
|
||||
org.astro@1.0
|
||||
```
|
@ -1,423 +0,0 @@
|
||||
.\" Copyright (c) 2017, 2023, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JMOD" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jmod - create JMOD files and list the content of existing JMOD files
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jmod\f[R]
|
||||
(\f[V]create\f[R]|\f[V]extract\f[R]|\f[V]list\f[R]|\f[V]describe\f[R]|\f[V]hash\f[R])
|
||||
[\f[I]options\f[R]] \f[I]jmod-file\f[R]
|
||||
.PP
|
||||
Includes the following:
|
||||
.PP
|
||||
\f[B]Main operation modes\f[R]
|
||||
.TP
|
||||
\f[V]create\f[R]
|
||||
Creates a new JMOD archive file.
|
||||
.TP
|
||||
\f[V]extract\f[R]
|
||||
Extracts all the files from the JMOD archive file.
|
||||
.TP
|
||||
\f[V]list\f[R]
|
||||
Prints the names of all the entries.
|
||||
.TP
|
||||
\f[V]describe\f[R]
|
||||
Prints the module details.
|
||||
.TP
|
||||
\f[V]hash\f[R]
|
||||
Determines leaf modules and records the hashes of the dependencies that
|
||||
directly and indirectly require them.
|
||||
.PP
|
||||
\f[B]Options\f[R]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
See \f[B]Options for jmod\f[R].
|
||||
.PP
|
||||
\f[B]Required\f[R]
|
||||
.TP
|
||||
\f[I]jmod-file\f[R]
|
||||
Specifies the name of the JMOD file to create or from which to retrieve
|
||||
information.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\f[B]Note:\f[R] For most development tasks, including deploying modules
|
||||
on the module path or publishing them to a Maven repository, continue to
|
||||
package modules in modular JAR files.
|
||||
The \f[V]jmod\f[R] tool is intended for modules that have native
|
||||
libraries or other configuration files or for modules that you intend to
|
||||
link, with the \f[B]jlink\f[R] tool, to a runtime image.
|
||||
.PP
|
||||
The JMOD file format lets you aggregate files other than
|
||||
\f[V].class\f[R] files, metadata, and resources.
|
||||
This format is transportable but not executable, which means that you
|
||||
can use it during compile time or link time but not at run time.
|
||||
.PP
|
||||
Many \f[V]jmod\f[R] options involve specifying a path whose contents are
|
||||
copied into the resulting JMOD files.
|
||||
These options copy all the contents of the specified path, including
|
||||
subdirectories and their contents, but exclude files whose names match
|
||||
the pattern specified by the \f[V]--exclude\f[R] option.
|
||||
.PP
|
||||
With the \f[V]--hash-modules\f[R] option or the \f[V]jmod hash\f[R]
|
||||
command, you can, in each module\[aq]s descriptor, record hashes of the
|
||||
content of the modules that are allowed to depend upon it, thus
|
||||
\[dq]tying\[dq] together these modules.
|
||||
This enables a package to be exported to one or more specifically-named
|
||||
modules and to no others through qualified exports.
|
||||
The runtime verifies if the recorded hash of a module matches the one
|
||||
resolved at run time; if not, the runtime returns an error.
|
||||
.SH OPTIONS FOR JMOD
|
||||
.TP
|
||||
\f[V]--class-path\f[R] \f[I]path\f[R]
|
||||
Specifies the location of application JAR files or a directory
|
||||
containing classes to copy into the resulting JMOD file.
|
||||
.TP
|
||||
\f[V]--cmds\f[R] \f[I]path\f[R]
|
||||
Specifies the location of native commands to copy into the resulting
|
||||
JMOD file.
|
||||
.TP
|
||||
\f[V]--compress\f[R] \f[I]compress\f[R]
|
||||
Specifies the compression to use in creating the JMOD file.
|
||||
The accepted values are \f[V]zip-[0-9]\f[R], where \f[V]zip-0\f[R]
|
||||
provides no compression, and \f[V]zip-9\f[R] provides the best
|
||||
compression.
|
||||
Default is \f[V]zip-6\f[R].
|
||||
.TP
|
||||
\f[V]--config\f[R] \f[I]path\f[R]
|
||||
Specifies the location of user-editable configuration files to copy into
|
||||
the resulting JMOD file.
|
||||
.TP
|
||||
\f[V]--date\f[R]\f[I]TIMESTAMP\f[R]
|
||||
The timestamp in ISO-8601 extended offset date-time with optional
|
||||
time-zone format, to use for the timestamp of the entries, e.g.
|
||||
\[dq]2022-02-12T12:30:00-05:00\[dq].
|
||||
.TP
|
||||
\f[V]--dir\f[R] \f[I]path\f[R]
|
||||
Specifies the location where \f[V]jmod\f[R] puts extracted files from
|
||||
the specified JMOD archive.
|
||||
.TP
|
||||
\f[V]--dry-run\f[R]
|
||||
Performs a dry run of hash mode.
|
||||
It identifies leaf modules and their required modules without recording
|
||||
any hash values.
|
||||
.TP
|
||||
\f[V]--exclude\f[R] \f[I]pattern-list\f[R]
|
||||
Excludes files matching the supplied comma-separated pattern list, each
|
||||
element using one the following forms:
|
||||
.RS
|
||||
.IP \[bu] 2
|
||||
\f[I]glob-pattern\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]glob:\f[R]\f[I]glob-pattern\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]regex:\f[R]\f[I]regex-pattern\f[R]
|
||||
.PP
|
||||
See the \f[B]\f[VB]FileSystem.getPathMatcher\f[B]\f[R] method for the
|
||||
syntax of \f[I]glob-pattern\f[R].
|
||||
See the \f[B]\f[VB]Pattern\f[B]\f[R] class for the syntax of
|
||||
\f[I]regex-pattern\f[R], which represents a regular expression.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--hash-modules\f[R] \f[I]regex-pattern\f[R]
|
||||
Determines the leaf modules and records the hashes of the dependencies
|
||||
directly and indirectly requiring them, based on the module graph of the
|
||||
modules matching the given \f[I]regex-pattern\f[R].
|
||||
The hashes are recorded in the JMOD archive file being created, or a
|
||||
JMOD archive or modular JAR on the module path specified by the
|
||||
\f[V]jmod hash\f[R] command.
|
||||
.TP
|
||||
\f[V]--header-files\f[R] \f[I]path\f[R]
|
||||
Specifies the location of header files to copy into the resulting JMOD
|
||||
file.
|
||||
.TP
|
||||
\f[V]--help\f[R] or \f[V]-h\f[R]
|
||||
Prints a usage message.
|
||||
.TP
|
||||
\f[V]--help-extra\f[R]
|
||||
Prints help for extra options.
|
||||
.TP
|
||||
\f[V]--legal-notices\f[R] \f[I]path\f[R]
|
||||
Specifies the location of legal notices to copy into the resulting JMOD
|
||||
file.
|
||||
.TP
|
||||
\f[V]--libs\f[R] \f[I]path\f[R]
|
||||
Specifies location of native libraries to copy into the resulting JMOD
|
||||
file.
|
||||
.TP
|
||||
\f[V]--main-class\f[R] \f[I]class-name\f[R]
|
||||
Specifies main class to record in the module-info.class file.
|
||||
.TP
|
||||
\f[V]--man-pages\f[R] \f[I]path\f[R]
|
||||
Specifies the location of man pages to copy into the resulting JMOD
|
||||
file.
|
||||
.TP
|
||||
\f[V]--module-version\f[R] \f[I]module-version\f[R]
|
||||
Specifies the module version to record in the module-info.class file.
|
||||
.TP
|
||||
\f[V]--module-path\f[R] \f[I]path\f[R] or \f[V]-p\f[R] \f[I]path\f[R]
|
||||
Specifies the module path.
|
||||
This option is required if you also specify \f[V]--hash-modules\f[R].
|
||||
.TP
|
||||
\f[V]--target-platform\f[R] \f[I]platform\f[R]
|
||||
Specifies the target platform.
|
||||
.TP
|
||||
\f[V]--version\f[R]
|
||||
Prints version information of the \f[V]jmod\f[R] tool.
|
||||
.TP
|
||||
\f[V]\[at]\f[R]\f[I]filename\f[R]
|
||||
Reads options from the specified file.
|
||||
.RS
|
||||
.PP
|
||||
An options file is a text file that contains the options and values that
|
||||
you would ordinarily enter in a command prompt.
|
||||
Options may appear on one line or on several lines.
|
||||
You may not specify environment variables for path names.
|
||||
You may comment out lines by prefixinga hash symbol (\f[V]#\f[R]) to the
|
||||
beginning of the line.
|
||||
.PP
|
||||
The following is an example of an options file for the \f[V]jmod\f[R]
|
||||
command:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
#Wed Dec 07 00:40:19 EST 2016
|
||||
create --class-path mods/com.greetings --module-path mlib
|
||||
--cmds commands --config configfiles --header-files src/h
|
||||
--libs lib --main-class com.greetings.Main
|
||||
--man-pages man --module-version 1.0
|
||||
--os-arch \[dq]x86_x64\[dq] --os-name \[dq]macOS\[dq]
|
||||
--os-version \[dq]10.10.5\[dq] greetingsmod
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.SH EXTRA OPTIONS FOR JMOD
|
||||
.PP
|
||||
In addition to the options described in \f[B]Options for jmod\f[R], the
|
||||
following are extra options that can be used with the command.
|
||||
.TP
|
||||
\f[V]--do-not-resolve-by-default\f[R]
|
||||
Exclude from the default root set of modules
|
||||
.TP
|
||||
\f[V]--warn-if-resolved\f[R]
|
||||
Hint for a tool to issue a warning if the module is resolved.
|
||||
One of deprecated, deprecated-for-removal, or incubating.
|
||||
.SH JMOD CREATE EXAMPLE
|
||||
.PP
|
||||
The following is an example of creating a JMOD file:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jmod create --class-path mods/com.greetings --cmds commands
|
||||
--config configfiles --header-files src/h --libs lib
|
||||
--main-class com.greetings.Main --man-pages man --module-version 1.0
|
||||
--os-arch \[dq]x86_x64\[dq] --os-name \[dq]macOS\[dq]
|
||||
--os-version \[dq]10.10.5\[dq] greetingsmod
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Create a JMOD file specifying the date for the entries as
|
||||
\f[V]2022 March 15 00:00:00\f[R]:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jmod create --class-path build/foo/classes --date 2022-03-15T00:00:00Z
|
||||
jmods/foo1.jmod
|
||||
\f[R]
|
||||
.fi
|
||||
.SH JMOD HASH EXAMPLE
|
||||
.PP
|
||||
The following example demonstrates what happens when you try to link a
|
||||
leaf module (in this example, \f[V]ma\f[R]) with a required module
|
||||
(\f[V]mb\f[R]), and the hash value recorded in the required module
|
||||
doesn\[aq]t match that of the leaf module.
|
||||
.IP "1." 3
|
||||
Create and compile the following \f[V].java\f[R] files:
|
||||
.RS 4
|
||||
.IP \[bu] 2
|
||||
\f[V]jmodhashex/src/ma/module-info.java\f[R]
|
||||
.RS 2
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
module ma {
|
||||
requires mb;
|
||||
}
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]jmodhashex/src/mb/module-info.java\f[R]
|
||||
.RS 2
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
module mb {
|
||||
}
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]jmodhashex2/src/ma/module-info.java\f[R]
|
||||
.RS 2
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
module ma {
|
||||
requires mb;
|
||||
}
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]jmodhashex2/src/mb/module-info.java\f[R]
|
||||
.RS 2
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
module mb {
|
||||
}
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.RE
|
||||
.IP "2." 3
|
||||
Create a JMOD archive for each module.
|
||||
Create the directories \f[V]jmodhashex/jmods\f[R] and
|
||||
\f[V]jmodhashex2/jmods\f[R], and then run the following commands from
|
||||
the \f[V]jmodhashex\f[R] directory, then from the \f[V]jmodhashex2\f[R]
|
||||
directory:
|
||||
.RS 4
|
||||
.IP \[bu] 2
|
||||
\f[V]jmod create --class-path mods/ma jmods/ma.jmod\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[V]jmod create --class-path mods/mb jmods/mb.jmod\f[R]
|
||||
.RE
|
||||
.IP "3." 3
|
||||
Optionally preview the \f[V]jmod hash\f[R] command.
|
||||
Run the following command from the \f[V]jmodhashex\f[R] directory:
|
||||
.RS 4
|
||||
.PP
|
||||
\f[V]jmod hash --dry-run -module-path jmods --hash-modules .*\f[R]
|
||||
.PP
|
||||
The command prints the following:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Dry run:
|
||||
mb
|
||||
hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
This indicates that the \f[V]jmod hash\f[R] command (without the
|
||||
\f[V]--dry-run\f[R] option) will record the hash value of the leaf
|
||||
module \f[V]ma\f[R] in the module \f[V]mb\f[R].
|
||||
.RE
|
||||
.IP "4." 3
|
||||
Record hash values in the JMOD archive files contained in the
|
||||
\f[V]jmodhashex\f[R] directory.
|
||||
Run the following command from the \f[V]jmodhashex\f[R] directory:
|
||||
.RS 4
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jmod hash --module-path jmods --hash-modules .*\f[R]
|
||||
.RE
|
||||
.PP
|
||||
The command prints the following:
|
||||
.RS
|
||||
.PP
|
||||
\f[V]Hashes are recorded in module mb\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP "5." 3
|
||||
Print information about each JMOD archive contained in the
|
||||
\f[V]jmodhashex\f[R] directory.
|
||||
Run the highlighted commands from the \f[V]jmodhashex\f[R] directory:
|
||||
.RS 4
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jmod describe jmods/ma.jmod
|
||||
|
||||
ma
|
||||
requires mandated java.base
|
||||
requires mb
|
||||
|
||||
jmod describe jmods/mb.jmod
|
||||
|
||||
mb
|
||||
requires mandated java.base
|
||||
hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.IP "6." 3
|
||||
Attempt to create a runtime image that contains the module \f[V]ma\f[R]
|
||||
from the directory \f[V]jmodhashex2\f[R] but the module \f[V]mb\f[R]
|
||||
from the directory \f[V]jmodhashex\f[R].
|
||||
Run the following command from the \f[V]jmodhashex2\f[R] directory:
|
||||
.RS 4
|
||||
.IP \[bu] 2
|
||||
\f[B]Linux and macOS:\f[R]
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jlink --module-path $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[B]Windows:\f[R]
|
||||
.RS 2
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jlink --module-path %JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app\f[R]
|
||||
.RE
|
||||
.RE
|
||||
.PP
|
||||
The command prints an error message similar to the following:
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Error: Hash of ma (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2) differs to
|
||||
expected hash (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a) recorded in mb
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
348
src/jdk.jlink/share/man/jmod.md
Normal file
348
src/jdk.jlink/share/man/jmod.md
Normal file
@ -0,0 +1,348 @@
|
||||
---
|
||||
# Copyright (c) 2017, 2023, 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.
|
||||
#
|
||||
|
||||
title: 'JMOD(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jmod - create JMOD files and list the content of existing JMOD files
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jmod` (`create`\|`extract`\|`list`\|`describe`\|`hash`) \[*options*\]
|
||||
*jmod-file*
|
||||
|
||||
Includes the following:
|
||||
|
||||
**Main operation modes**
|
||||
|
||||
`create`
|
||||
: Creates a new JMOD archive file.
|
||||
|
||||
`extract`
|
||||
: Extracts all the files from the JMOD archive file.
|
||||
|
||||
`list`
|
||||
: Prints the names of all the entries.
|
||||
|
||||
`describe`
|
||||
: Prints the module details.
|
||||
|
||||
`hash`
|
||||
: Determines leaf modules and records the hashes of the dependencies that
|
||||
directly and indirectly require them.
|
||||
|
||||
**Options**
|
||||
|
||||
*options*
|
||||
: See [Options for jmod].
|
||||
|
||||
**Required**
|
||||
|
||||
*jmod-file*
|
||||
: Specifies the name of the JMOD file to create or from which to retrieve
|
||||
information.
|
||||
|
||||
## Description
|
||||
|
||||
**Note:** For most development tasks, including deploying modules on the module
|
||||
path or publishing them to a Maven repository, continue to package modules in
|
||||
modular JAR files. The `jmod` tool is intended for modules that have native
|
||||
libraries or other configuration files or for modules that you intend to link,
|
||||
with the [jlink](jlink.html) tool, to a runtime image.
|
||||
|
||||
The JMOD file format lets you aggregate files other than `.class` files,
|
||||
metadata, and resources. This format is transportable but not executable, which
|
||||
means that you can use it during compile time or link time but not at run time.
|
||||
|
||||
Many `jmod` options involve specifying a path whose contents are copied into
|
||||
the resulting JMOD files. These options copy all the contents of the specified
|
||||
path, including subdirectories and their contents, but exclude files whose
|
||||
names match the pattern specified by the `--exclude` option.
|
||||
|
||||
With the `--hash-modules` option or the `jmod hash` command, you can, in each
|
||||
module's descriptor, record hashes of the content of the modules that are
|
||||
allowed to depend upon it, thus "tying" together these modules. This enables a
|
||||
package to be exported to one or more specifically-named modules and to no
|
||||
others through qualified exports. The runtime verifies if the recorded hash of
|
||||
a module matches the one resolved at run time; if not, the runtime returns an
|
||||
error.
|
||||
|
||||
## Options for jmod
|
||||
|
||||
`--class-path` *path*
|
||||
: Specifies the location of application JAR files or a directory containing
|
||||
classes to copy into the resulting JMOD file.
|
||||
|
||||
`--cmds` *path*
|
||||
: Specifies the location of native commands to copy into the resulting JMOD
|
||||
file.
|
||||
|
||||
`--compress` *compress*
|
||||
: Specifies the compression to use in creating the JMOD file.
|
||||
The accepted values are `zip-[0-9]`, where `zip-0` provides no
|
||||
compression, and `zip-9` provides the best compression. Default is `zip-6`.
|
||||
|
||||
`--config` *path*
|
||||
: Specifies the location of user-editable configuration files to copy into
|
||||
the resulting JMOD file.
|
||||
|
||||
`--date `*TIMESTAMP*
|
||||
: The timestamp in ISO-8601 extended offset date-time with optional time-zone
|
||||
format, to use for the timestamp of the entries,
|
||||
e.g. "2022-02-12T12:30:00-05:00".
|
||||
|
||||
`--dir` *path*
|
||||
: Specifies the location where `jmod` puts extracted files from the specified
|
||||
JMOD archive.
|
||||
|
||||
`--dry-run`
|
||||
: Performs a dry run of hash mode. It identifies leaf modules and their
|
||||
required modules without recording any hash values.
|
||||
|
||||
`--exclude` *pattern-list*
|
||||
: Excludes files matching the supplied comma-separated pattern list, each
|
||||
element using one the following forms:
|
||||
|
||||
- *glob-pattern*
|
||||
|
||||
- `glob:`*glob-pattern*
|
||||
|
||||
- `regex:`*regex-pattern*
|
||||
|
||||
See the [`FileSystem.getPathMatcher`](
|
||||
../../api/java.base/java/nio/file/FileSystem.html#getPathMatcher(java.lang.String))
|
||||
method for the syntax of *glob-pattern*. See the [`Pattern`](
|
||||
../../api/java.base/java/util/regex/Pattern.html)
|
||||
class for the syntax of *regex-pattern*, which represents a regular
|
||||
expression.
|
||||
|
||||
`--hash-modules` *regex-pattern*
|
||||
: Determines the leaf modules and records the hashes of the dependencies
|
||||
directly and indirectly requiring them, based on the module graph of the
|
||||
modules matching the given *regex-pattern*. The hashes are recorded in the
|
||||
JMOD archive file being created, or a JMOD archive or modular JAR on the
|
||||
module path specified by the `jmod hash` command.
|
||||
|
||||
`--header-files` *path*
|
||||
: Specifies the location of header files to copy into the resulting JMOD
|
||||
file.
|
||||
|
||||
`--help` or `-h`
|
||||
: Prints a usage message.
|
||||
|
||||
`--help-extra`
|
||||
: Prints help for extra options.
|
||||
|
||||
`--legal-notices` *path*
|
||||
: Specifies the location of legal notices to copy into the resulting JMOD
|
||||
file.
|
||||
|
||||
`--libs` *path*
|
||||
: Specifies location of native libraries to copy into the resulting JMOD
|
||||
file.
|
||||
|
||||
`--main-class` *class-name*
|
||||
: Specifies main class to record in the module-info.class file.
|
||||
|
||||
`--man-pages` *path*
|
||||
: Specifies the location of man pages to copy into the resulting JMOD file.
|
||||
|
||||
`--module-version` *module-version*
|
||||
: Specifies the module version to record in the module-info.class file.
|
||||
|
||||
`--module-path` *path* or `-p` *path*
|
||||
: Specifies the module path. This option is required if you also specify
|
||||
`--hash-modules`.
|
||||
|
||||
`--target-platform` *platform*
|
||||
: Specifies the target platform.
|
||||
|
||||
`--version`
|
||||
: Prints version information of the `jmod` tool.
|
||||
|
||||
`@`*filename*
|
||||
: Reads options from the specified file.
|
||||
|
||||
An options file is a text file that contains the options and values that
|
||||
you would ordinarily enter in a command prompt. Options may appear on one
|
||||
line or on several lines. You may not specify environment variables for
|
||||
path names. You may comment out lines by prefixinga hash symbol (`#`) to
|
||||
the beginning of the line.
|
||||
|
||||
The following is an example of an options file for the `jmod` command:
|
||||
|
||||
```
|
||||
#Wed Dec 07 00:40:19 EST 2016
|
||||
create --class-path mods/com.greetings --module-path mlib
|
||||
--cmds commands --config configfiles --header-files src/h
|
||||
--libs lib --main-class com.greetings.Main
|
||||
--man-pages man --module-version 1.0
|
||||
--os-arch "x86_x64" --os-name "macOS"
|
||||
--os-version "10.10.5" greetingsmod
|
||||
```
|
||||
|
||||
## Extra Options for jmod
|
||||
|
||||
In addition to the options described in [Options for jmod], the following are
|
||||
extra options that can be used with the command.
|
||||
|
||||
`--do-not-resolve-by-default`
|
||||
: Exclude from the default root set of modules
|
||||
|
||||
`--warn-if-resolved`
|
||||
: Hint for a tool to issue a warning if the module is resolved. One of
|
||||
deprecated, deprecated-for-removal, or incubating.
|
||||
|
||||
## jmod Create Example
|
||||
|
||||
The following is an example of creating a JMOD file:
|
||||
|
||||
```
|
||||
jmod create --class-path mods/com.greetings --cmds commands
|
||||
--config configfiles --header-files src/h --libs lib
|
||||
--main-class com.greetings.Main --man-pages man --module-version 1.0
|
||||
--os-arch "x86_x64" --os-name "macOS"
|
||||
--os-version "10.10.5" greetingsmod
|
||||
```
|
||||
Create a JMOD file specifying the date for the entries as `2022 March 15 00:00:00`:
|
||||
|
||||
```
|
||||
jmod create --class-path build/foo/classes --date 2022-03-15T00:00:00Z
|
||||
jmods/foo1.jmod
|
||||
```
|
||||
## jmod Hash Example
|
||||
|
||||
The following example demonstrates what happens when you try to link a leaf
|
||||
module (in this example, `ma`) with a required module (`mb`), and the hash
|
||||
value recorded in the required module doesn't match that of the leaf module.
|
||||
|
||||
1. Create and compile the following `.java` files:
|
||||
|
||||
- `jmodhashex/src/ma/module-info.java`
|
||||
|
||||
```
|
||||
module ma {
|
||||
requires mb;
|
||||
}
|
||||
```
|
||||
|
||||
- `jmodhashex/src/mb/module-info.java`
|
||||
|
||||
```
|
||||
module mb {
|
||||
}
|
||||
```
|
||||
|
||||
- `jmodhashex2/src/ma/module-info.java`
|
||||
|
||||
```
|
||||
module ma {
|
||||
requires mb;
|
||||
}
|
||||
```
|
||||
|
||||
- `jmodhashex2/src/mb/module-info.java`
|
||||
|
||||
```
|
||||
module mb {
|
||||
}
|
||||
```
|
||||
|
||||
2. Create a JMOD archive for each module. Create the directories
|
||||
`jmodhashex/jmods` and `jmodhashex2/jmods`, and then run the following
|
||||
commands from the `jmodhashex` directory, then from the `jmodhashex2`
|
||||
directory:
|
||||
|
||||
- `jmod create --class-path mods/ma jmods/ma.jmod`
|
||||
|
||||
- `jmod create --class-path mods/mb jmods/mb.jmod`
|
||||
|
||||
3. Optionally preview the `jmod hash` command. Run the following command from
|
||||
the `jmodhashex` directory:
|
||||
|
||||
`jmod hash --dry-run -module-path jmods --hash-modules .*`
|
||||
|
||||
The command prints the following:
|
||||
|
||||
```
|
||||
Dry run:
|
||||
mb
|
||||
hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
|
||||
```
|
||||
|
||||
This indicates that the `jmod hash` command (without the `--dry-run`
|
||||
option) will record the hash value of the leaf module `ma` in the module
|
||||
`mb`.
|
||||
|
||||
4. Record hash values in the JMOD archive files contained in the `jmodhashex`
|
||||
directory. Run the following command from the `jmodhashex` directory:
|
||||
|
||||
> `jmod hash --module-path jmods --hash-modules .*`
|
||||
|
||||
The command prints the following:
|
||||
|
||||
> `Hashes are recorded in module mb`
|
||||
|
||||
5. Print information about each JMOD archive contained in the `jmodhashex`
|
||||
directory. Run the highlighted commands from the `jmodhashex` directory:
|
||||
|
||||
```
|
||||
jmod describe jmods/ma.jmod
|
||||
|
||||
ma
|
||||
requires mandated java.base
|
||||
requires mb
|
||||
|
||||
jmod describe jmods/mb.jmod
|
||||
|
||||
mb
|
||||
requires mandated java.base
|
||||
hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
|
||||
```
|
||||
|
||||
6. Attempt to create a runtime image that contains the module `ma` from the
|
||||
directory `jmodhashex2` but the module `mb` from the directory
|
||||
`jmodhashex`. Run the following command from the `jmodhashex2` directory:
|
||||
|
||||
- **Linux and macOS:**
|
||||
|
||||
> `jlink --module-path
|
||||
$JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod
|
||||
--add-modules ma --output ma-app`
|
||||
|
||||
- **Windows:**
|
||||
|
||||
> `jlink --module-path
|
||||
%JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod
|
||||
--add-modules ma --output ma-app`
|
||||
|
||||
The command prints an error message similar to the following:
|
||||
|
||||
```
|
||||
Error: Hash of ma (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2) differs to
|
||||
expected hash (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a) recorded in mb
|
||||
```
|
@ -1,834 +0,0 @@
|
||||
.\" Copyright (c) 2018, 2024, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JPACKAGE" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jpackage - tool for packaging self-contained Java applications.
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[V]jpackage\f[R] [\f[I]options\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
Command-line options separated by spaces.
|
||||
See \f[B]jpackage Options\f[R].
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jpackage\f[R] tool will take as input a Java application and a
|
||||
Java run-time image, and produce a Java application image that includes
|
||||
all the necessary dependencies.
|
||||
It will be able to produce a native package in a platform-specific
|
||||
format, such as an exe on Windows or a dmg on macOS.
|
||||
Each format must be built on the platform it runs on, there is no
|
||||
cross-platform support.
|
||||
The tool will have options that allow packaged applications to be
|
||||
customized in various ways.
|
||||
.SH JPACKAGE OPTIONS
|
||||
.SS Generic Options:
|
||||
.TP
|
||||
\f[V]\[at]\f[R]\f[I]filename\f[R]
|
||||
Read options from a file.
|
||||
.RS
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--type\f[R] or \f[V]-t\f[R] \f[I]type\f[R]
|
||||
The type of package to create
|
||||
.RS
|
||||
.PP
|
||||
Valid values are: {\[dq]app-image\[dq], \[dq]exe\[dq], \[dq]msi\[dq],
|
||||
\[dq]rpm\[dq], \[dq]deb\[dq], \[dq]pkg\[dq], \[dq]dmg\[dq]}
|
||||
.PP
|
||||
If this option is not specified a platform dependent default type will
|
||||
be created.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--app-version\f[R] \f[I]version\f[R]
|
||||
Version of the application and/or package
|
||||
.TP
|
||||
\f[V]--copyright\f[R] \f[I]copyright\f[R]
|
||||
Copyright for the application
|
||||
.TP
|
||||
\f[V]--description\f[R] \f[I]description\f[R]
|
||||
Description of the application
|
||||
.TP
|
||||
\f[V]--help\f[R] or \f[V]-h\f[R]
|
||||
Print the usage text with a list and description of each valid option
|
||||
for the current platform to the output stream, and exit.
|
||||
.TP
|
||||
\f[V]--icon\f[R] \f[I]path\f[R]
|
||||
Path of the icon of the application package
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--name\f[R] or \f[V]-n\f[R] \f[I]name\f[R]
|
||||
Name of the application and/or package
|
||||
.TP
|
||||
\f[V]--dest\f[R] or \f[V]-d\f[R] \f[I]destination\f[R]
|
||||
Path where generated output file is placed
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory).
|
||||
.PP
|
||||
Defaults to the current working directory.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--resource-dir\f[R] \f[I]path\f[R]
|
||||
Path to override jpackage resources
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
Icons, template files, and other resources of jpackage can be
|
||||
over-ridden by adding replacement resources to this directory.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--temp\f[R] \f[I]directory\f[R]
|
||||
Path of a new or empty directory used to create temporary files
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
If specified, the temp dir will not be removed upon the task completion
|
||||
and must be removed manually.
|
||||
.PP
|
||||
If not specified, a temporary directory will be created and removed upon
|
||||
the task completion.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--vendor\f[R] \f[I]vendor\f[R]
|
||||
Vendor of the application
|
||||
.TP
|
||||
\f[V]--verbose\f[R]
|
||||
Enables verbose output.
|
||||
.TP
|
||||
\f[V]--version\f[R]
|
||||
Print the product version to the output stream and exit.
|
||||
.SS Options for creating the runtime image:
|
||||
.TP
|
||||
\f[V]--add-modules\f[R] \f[I]module-name\f[R] [\f[V],\f[R]\f[I]module-name\f[R]...]
|
||||
A comma (\[dq],\[dq]) separated list of modules to add
|
||||
.RS
|
||||
.PP
|
||||
This module list, along with the main module (if specified) will be
|
||||
passed to jlink as the --add-module argument.
|
||||
If not specified, either just the main module (if --module is
|
||||
specified), or the default set of modules (if --main-jar is specified)
|
||||
are used.
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--module-path\f[R] or \f[V]-p\f[R] \f[I]module-path\f[R] [\f[V],\f[R]\f[I]module-path\f[R]...]
|
||||
A File.pathSeparator separated list of paths
|
||||
.RS
|
||||
.PP
|
||||
Each path is either a directory of modules or the path to a modular jar,
|
||||
and is absolute or relative to the current directory.
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--jlink-options\f[R] \f[I]options\f[R]
|
||||
A space separated list of options to pass to jlink
|
||||
.RS
|
||||
.PP
|
||||
If not specified, defaults to \[dq]--strip-native-commands --strip-debug
|
||||
--no-man-pages --no-header-files\[dq]
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--runtime-image\f[R] \f[I]directory\f[R]
|
||||
Path of the predefined runtime image that will be copied into the
|
||||
application image
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
If --runtime-image is not specified, jpackage will run jlink to create
|
||||
the runtime image using options specified by --jlink-options.
|
||||
.RE
|
||||
.SS Options for creating the application image:
|
||||
.TP
|
||||
\f[V]--input\f[R] or \f[V]-i\f[R] \f[I]directory\f[R]
|
||||
Path of the input directory that contains the files to be packaged
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
All files in the input directory will be packaged into the application
|
||||
image.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--app-content\f[R] \f[I]additional-content\f[R] [\f[V],\f[R]\f[I]additional-content\f[R]...]
|
||||
A comma separated list of paths to files and/or directories to add to
|
||||
the application payload.
|
||||
.RS
|
||||
.PP
|
||||
This option can be used more than once.
|
||||
.RE
|
||||
.SS Options for creating the application launcher(s):
|
||||
.TP
|
||||
\f[V]--add-launcher\f[R] \f[I]name\f[R]=\f[I]path\f[R]
|
||||
Name of launcher, and a path to a Properties file that contains a list
|
||||
of key, value pairs
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
The keys \[dq]module\[dq], \[dq]main-jar\[dq], \[dq]main-class\[dq],
|
||||
\[dq]description\[dq], \[dq]arguments\[dq], \[dq]java-options\[dq],
|
||||
\[dq]icon\[dq], \[dq]launcher-as-service\[dq], \[dq]win-console\[dq],
|
||||
\[dq]win-shortcut\[dq], \[dq]win-menu\[dq], and \[dq]linux-shortcut\[dq]
|
||||
can be used.
|
||||
.PP
|
||||
These options are added to, or used to overwrite, the original command
|
||||
line options to build an additional alternative launcher.
|
||||
The main application launcher will be built from the command line
|
||||
options.
|
||||
Additional alternative launchers can be built using this option, and
|
||||
this option can be used multiple times to build multiple additional
|
||||
launchers.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--arguments\f[R] \f[I]arguments\f[R]
|
||||
Command line arguments to pass to the main class if no command line
|
||||
arguments are given to the launcher
|
||||
.RS
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--java-options\f[R] \f[I]options\f[R]
|
||||
Options to pass to the Java runtime
|
||||
.RS
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--main-class\f[R] \f[I]class-name\f[R]
|
||||
Qualified name of the application main class to execute
|
||||
.RS
|
||||
.PP
|
||||
This option can only be used if --main-jar is specified.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--main-jar\f[R] \f[I]main-jar\f[R]
|
||||
The main JAR of the application; containing the main class (specified as
|
||||
a path relative to the input path)
|
||||
.RS
|
||||
.PP
|
||||
Either --module or --main-jar option can be specified but not both.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--module\f[R] or \f[V]-m\f[R] \f[I]module-name\f[R][/\f[I]main-class\f[R]]
|
||||
The main module (and optionally main class) of the application
|
||||
.RS
|
||||
.PP
|
||||
This module must be located on the module path.
|
||||
.PP
|
||||
When this option is specified, the main module will be linked in the
|
||||
Java runtime image.
|
||||
Either --module or --main-jar option can be specified but not both.
|
||||
.RE
|
||||
.SS Platform dependent options for creating the application launcher:
|
||||
.SS Windows platform options (available only when running on Windows):
|
||||
.TP
|
||||
\f[V]--win-console\f[R]
|
||||
Creates a console launcher for the application, should be specified for
|
||||
application which requires console interactions
|
||||
.SS macOS platform options (available only when running on macOS):
|
||||
.TP
|
||||
\f[V]--mac-package-identifier\f[R] \f[I]identifier\f[R]
|
||||
An identifier that uniquely identifies the application for macOS
|
||||
.RS
|
||||
.PP
|
||||
Defaults to the main class name.
|
||||
.PP
|
||||
May only use alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.)
|
||||
characters.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--mac-package-name\f[R] \f[I]name\f[R]
|
||||
Name of the application as it appears in the Menu Bar
|
||||
.RS
|
||||
.PP
|
||||
This can be different from the application name.
|
||||
.PP
|
||||
This name must be less than 16 characters long and be suitable for
|
||||
displaying in the menu bar and the application Info window.
|
||||
Defaults to the application name.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--mac-package-signing-prefix\f[R] \f[I]prefix\f[R]
|
||||
When signing the application package, this value is prefixed to all
|
||||
components that need to be signed that don\[aq]t have an existing
|
||||
package identifier.
|
||||
.TP
|
||||
\f[V]--mac-sign\f[R]
|
||||
Request that the package or the predefined application image be signed.
|
||||
.TP
|
||||
\f[V]--mac-signing-keychain\f[R] \f[I]keychain-name\f[R]
|
||||
Name of the keychain to search for the signing identity
|
||||
.RS
|
||||
.PP
|
||||
If not specified, the standard keychains are used.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--mac-signing-key-user-name\f[R] \f[I]name\f[R]
|
||||
Team or user name portion in Apple signing identities
|
||||
.TP
|
||||
\f[V]--mac-app-store\f[R]
|
||||
Indicates that the jpackage output is intended for the Mac App Store.
|
||||
.TP
|
||||
\f[V]--mac-entitlements\f[R] \f[I]path\f[R]
|
||||
Path to file containing entitlements to use when signing executables and
|
||||
libraries in the bundle
|
||||
.TP
|
||||
\f[V]--mac-app-category\f[R] \f[I]category\f[R]
|
||||
String used to construct LSApplicationCategoryType in application plist
|
||||
.RS
|
||||
.PP
|
||||
The default value is \[dq]utilities\[dq].
|
||||
.RE
|
||||
.SS Options for creating the application package:
|
||||
.TP
|
||||
\f[V]--about-url\f[R] \f[I]url\f[R]
|
||||
URL of the application\[aq]s home page
|
||||
.TP
|
||||
\f[V]--app-image\f[R] \f[I]directory\f[R]
|
||||
Location of the predefined application image that is used to build an
|
||||
installable package (on all platforms) or to be signed (on macOS)
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--file-associations\f[R] \f[I]path\f[R]
|
||||
Path to a Properties file that contains list of key, value pairs
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
The keys \[dq]extension\[dq], \[dq]mime-type\[dq], \[dq]icon\[dq], and
|
||||
\[dq]description\[dq] can be used to describe the association.
|
||||
.PP
|
||||
This option can be used multiple times.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--install-dir\f[R] \f[I]path\f[R]
|
||||
Absolute path of the installation directory of the application (on macOS
|
||||
or linux), or relative sub-path of the installation directory such as
|
||||
\[dq]Program Files\[dq] or \[dq]AppData\[dq] (on Windows)
|
||||
.TP
|
||||
\f[V]--license-file\f[R] \f[I]path\f[R]
|
||||
Path to the license file
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--runtime-image\f[R] \f[I]path\f[R]
|
||||
Path of the predefined runtime image to install
|
||||
.RS
|
||||
.PP
|
||||
(absolute path or relative to the current directory)
|
||||
.PP
|
||||
Option is required when creating a runtime installer.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--launcher-as-service\f[R]
|
||||
Request to create an installer that will register the main application
|
||||
launcher as a background service-type application.
|
||||
.SS Platform dependent options for creating the application package:
|
||||
.SS Windows platform options (available only when running on Windows):
|
||||
.TP
|
||||
\f[V]--win-dir-chooser\f[R]
|
||||
Adds a dialog to enable the user to choose a directory in which the
|
||||
product is installed.
|
||||
.TP
|
||||
\f[V]--win-help-url\f[R] \f[I]url\f[R]
|
||||
URL where user can obtain further information or technical support
|
||||
.TP
|
||||
\f[V]--win-menu\f[R]
|
||||
Request to add a Start Menu shortcut for this application
|
||||
.TP
|
||||
\f[V]--win-menu-group\f[R] \f[I]menu-group-name\f[R]
|
||||
Start Menu group this application is placed in
|
||||
.TP
|
||||
\f[V]--win-per-user-install\f[R]
|
||||
Request to perform an install on a per-user basis
|
||||
.TP
|
||||
\f[V]--win-shortcut\f[R]
|
||||
Request to create a desktop shortcut for this application
|
||||
.TP
|
||||
\f[V]--win-shortcut-prompt\f[R]
|
||||
Adds a dialog to enable the user to choose if shortcuts will be created
|
||||
by installer
|
||||
.TP
|
||||
\f[V]--win-update-url\f[R] \f[I]url\f[R]
|
||||
URL of available application update information
|
||||
.TP
|
||||
\f[V]--win-upgrade-uuid\f[R] \f[I]id\f[R]
|
||||
UUID associated with upgrades for this package
|
||||
.SS Linux platform options (available only when running on Linux):
|
||||
.TP
|
||||
\f[V]--linux-package-name\f[R] \f[I]name\f[R]
|
||||
Name for Linux package
|
||||
.RS
|
||||
.PP
|
||||
Defaults to the application name.
|
||||
.RE
|
||||
.TP
|
||||
\f[V]--linux-deb-maintainer\f[R] \f[I]email-address\f[R]
|
||||
Maintainer for .deb bundle
|
||||
.TP
|
||||
\f[V]--linux-menu-group\f[R] \f[I]menu-group-name\f[R]
|
||||
Menu group this application is placed in
|
||||
.TP
|
||||
\f[V]--linux-package-deps\f[R]
|
||||
Required packages or capabilities for the application
|
||||
.TP
|
||||
\f[V]--linux-rpm-license-type\f[R] \f[I]type\f[R]
|
||||
Type of the license (\[dq]License: \f[I]value\f[R]\[dq] of the RPM
|
||||
\&.spec)
|
||||
.TP
|
||||
\f[V]--linux-app-release\f[R] \f[I]release\f[R]
|
||||
Release value of the RPM <name>.spec file or Debian revision value of
|
||||
the DEB control file
|
||||
.TP
|
||||
\f[V]--linux-app-category\f[R] \f[I]category-value\f[R]
|
||||
Group value of the RPM /.spec file or Section value of DEB control file
|
||||
.TP
|
||||
\f[V]--linux-shortcut\f[R]
|
||||
Creates a shortcut for the application.
|
||||
.SS macOS platform options (available only when running on macOS):
|
||||
.TP
|
||||
\f[V]--mac-dmg-content\f[R] \f[I]additional-content\f[R] [\f[V],\f[R]\f[I]additional-content\f[R]...]
|
||||
Include all the referenced content in the dmg.
|
||||
.RS
|
||||
.PP
|
||||
This option can be used more than once.
|
||||
.RE
|
||||
.SH JPACKAGE EXAMPLES
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Generate an application package suitable for the host system:
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
For a modular application:
|
||||
jpackage -n name -p modulePath -m moduleName/className
|
||||
For a non-modular application:
|
||||
jpackage -i inputDir -n name \[rs]
|
||||
--main-class className --main-jar myJar.jar
|
||||
From a pre-built application image:
|
||||
jpackage -n name --app-image appImageDir
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Generate an application image:
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
For a modular application:
|
||||
jpackage --type app-image -n name -p modulePath \[rs]
|
||||
-m moduleName/className
|
||||
For a non-modular application:
|
||||
jpackage --type app-image -i inputDir -n name \[rs]
|
||||
--main-class className --main-jar myJar.jar
|
||||
To provide your own options to jlink, run jlink separately:
|
||||
jlink --output appRuntimeImage -p modulePath \[rs]
|
||||
--add-modules moduleName \[rs]
|
||||
--no-header-files [<additional jlink options>...]
|
||||
jpackage --type app-image -n name \[rs]
|
||||
-m moduleName/className --runtime-image appRuntimeImage
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Generate a Java runtime package:
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jpackage -n name --runtime-image <runtime-image>
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
Sign the predefined application image (on macOS):
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jpackage --type app-image --app-image <app-image> \[rs]
|
||||
--mac-sign [<additional signing options>...]
|
||||
|
||||
Note: the only additional options that are permitted in this mode are:
|
||||
the set of additional mac signing options and --verbose
|
||||
\f[R]
|
||||
.fi
|
||||
.SH JPACKAGE RESOURCE DIRECTORY
|
||||
.PP
|
||||
Icons, template files, and other resources of jpackage can be
|
||||
over-ridden by adding replacement resources to this directory.
|
||||
jpackage will lookup files by specific names in the resource directory.
|
||||
.SS Resource directory files considered only when running on Linux:
|
||||
.TP
|
||||
\f[V]<launcher-name>.png\f[R]
|
||||
Application launcher icon
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]JavaApp.png\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<launcher-name>.desktop\f[R]
|
||||
A desktop file to be used with \f[V]xdg-desktop-menu\f[R] command
|
||||
.RS
|
||||
.PP
|
||||
Considered with application launchers registered for file associations
|
||||
and/or have an icon
|
||||
.PP
|
||||
Default resource is \f[I]template.desktop\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when building Linux DEB/RPM installer:
|
||||
.TP
|
||||
\f[V]<package-name>-<launcher-name>.service\f[R]
|
||||
systemd unit file for application launcher registered as a background
|
||||
service-type application
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]unit-template.service\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when building Linux RPM installer:
|
||||
.TP
|
||||
\f[V]<package-name>.spec\f[R]
|
||||
RPM spec file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.spec\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when building Linux DEB installer:
|
||||
.TP
|
||||
\f[V]control\f[R]
|
||||
Control file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.control\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]copyright\f[R]
|
||||
Copyright file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.copyright\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]preinstall\f[R]
|
||||
Pre-install shell script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.preinstall\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]prerm\f[R]
|
||||
Pre-remove shell script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.prerm\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]postinstall\f[R]
|
||||
Post-install shell script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.postinstall\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]postrm\f[R]
|
||||
Post-remove shell script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]template.postrm\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when running on Windows:
|
||||
.TP
|
||||
\f[V]<launcher-name>.ico\f[R]
|
||||
Application launcher icon
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]JavaApp.ico\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<launcher-name>.properties\f[R]
|
||||
Properties file for application launcher executable
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]WinLauncher.template\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when building Windows MSI/EXE installer:
|
||||
.TP
|
||||
\f[V]<application-name>-post-image.wsf\f[R]
|
||||
A Windows Script File (WSF) to run after building application image
|
||||
.TP
|
||||
\f[V]main.wxs\f[R]
|
||||
Main WiX project file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]main.wxs\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]overrides.wxi\f[R]
|
||||
Overrides WiX project file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]overrides.wxi\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]service-installer.exe\f[R]
|
||||
Service installer executable
|
||||
.RS
|
||||
.PP
|
||||
Considered if some application launchers are registered as background
|
||||
service-type applications
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<launcher-name>-service-install.wxi\f[R]
|
||||
Service installer WiX project file
|
||||
.RS
|
||||
.PP
|
||||
Considered if some application launchers are registered as background
|
||||
service-type applications
|
||||
.PP
|
||||
Default resource is \f[I]service-install.wxi\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<launcher-name>-service-config.wxi\f[R]
|
||||
Service installer WiX project file
|
||||
.RS
|
||||
.PP
|
||||
Considered if some application launchers are registered as background
|
||||
service-type applications
|
||||
.PP
|
||||
Default resource is \f[I]service-config.wxi\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]InstallDirNotEmptyDlg.wxs\f[R]
|
||||
WiX project file for installer UI dialog checking installation directory
|
||||
doesn\[aq]t exist or is empty
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]InstallDirNotEmptyDlg.wxs\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]ShortcutPromptDlg.wxs\f[R]
|
||||
WiX project file for installer UI dialog configuring shortcuts
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]ShortcutPromptDlg.wxs\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]bundle.wxf\f[R]
|
||||
WiX project file with the hierarchy of components of application image
|
||||
.TP
|
||||
\f[V]ui.wxf\f[R]
|
||||
WiX project file for installer UI
|
||||
.SS Resource directory files considered only when building Windows EXE installer:
|
||||
.TP
|
||||
\f[V]WinInstaller.properties\f[R]
|
||||
Properties file for the installer executable
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]WinInstaller.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-post-msi.wsf\f[R]
|
||||
A Windows Script File (WSF) to run after building embedded MSI installer
|
||||
for EXE installer
|
||||
.SS Resource directory files considered only when running on macOS:
|
||||
.TP
|
||||
\f[V]<launcher-name>.icns\f[R]
|
||||
Application launcher icon
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]JavaApp.icns\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]Info.plist\f[R]
|
||||
Application property list file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]Info-lite.plist.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]Runtime-Info.plist\f[R]
|
||||
Java Runtime property list file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]Runtime-Info.plist.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<application-name>.entitlements\f[R]
|
||||
Signing entitlements property list file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]sandbox.plist\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when building macOS PKG/DMG installer:
|
||||
.TP
|
||||
\f[V]<package-name>-post-image.sh\f[R]
|
||||
Shell script to run after building application image
|
||||
.SS Resource directory files considered only when building macOS PKG installer:
|
||||
.TP
|
||||
\f[V]uninstaller\f[R]
|
||||
Uninstaller shell script
|
||||
.RS
|
||||
.PP
|
||||
Considered if some application launchers are registered as background
|
||||
service-type applications
|
||||
.PP
|
||||
Default resource is \f[I]uninstall.command.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]preinstall\f[R]
|
||||
Pre-install shell script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]preinstall.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]postinstall\f[R]
|
||||
Post-install shell script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]postinstall.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]services-preinstall\f[R]
|
||||
Pre-install shell script for services package
|
||||
.RS
|
||||
.PP
|
||||
Considered if some application launchers are registered as background
|
||||
service-type applications
|
||||
.PP
|
||||
Default resource is \f[I]services-preinstall.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]services-postinstall\f[R]
|
||||
Post-install shell script for services package
|
||||
.RS
|
||||
.PP
|
||||
Considered if some application launchers are registered as background
|
||||
service-type applications
|
||||
.PP
|
||||
Default resource is \f[I]services-postinstall.template\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-background.png\f[R]
|
||||
Background image
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]background_pkg.png\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-background-darkAqua.png\f[R]
|
||||
Dark background image
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]background_pkg.png\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]product-def.plist\f[R]
|
||||
Package property list file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]product-def.plist\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-<launcher-name>.plist\f[R]
|
||||
launchd property list file for application launcher registered as a
|
||||
background service-type application
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]launchd.plist.template\f[R]
|
||||
.RE
|
||||
.SS Resource directory files considered only when building macOS DMG installer:
|
||||
.TP
|
||||
\f[V]<package-name>-dmg-setup.scpt\f[R]
|
||||
Setup AppleScript script
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]DMGsetup.scpt\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-license.plist\f[R]
|
||||
License property list file
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]lic_template.plist\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-background.tiff\f[R]
|
||||
Background image
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]background_dmg.tiff\f[R]
|
||||
.RE
|
||||
.TP
|
||||
\f[V]<package-name>-volume.icns\f[R]
|
||||
Volume icon
|
||||
.RS
|
||||
.PP
|
||||
Default resource is \f[I]JavaApp.icns\f[R]
|
||||
.RE
|
791
src/jdk.jpackage/share/man/jpackage.md
Normal file
791
src/jdk.jpackage/share/man/jpackage.md
Normal file
@ -0,0 +1,791 @@
|
||||
---
|
||||
# Copyright (c) 2018, 2024, 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.
|
||||
#
|
||||
|
||||
title: 'JPACKAGE(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jpackage - tool for packaging self-contained Java applications.
|
||||
|
||||
## Synopsis
|
||||
|
||||
`jpackage` \[*options*\]
|
||||
|
||||
|
||||
*options*
|
||||
: Command-line options separated by spaces. See [jpackage Options].
|
||||
|
||||
## Description
|
||||
|
||||
The `jpackage` tool will take as input a Java application and a Java run-time image, and produce a Java application image that includes all the necessary dependencies. It will be able to produce a native package in a platform-specific format, such as an exe on Windows or a dmg on macOS. Each format must be built on the platform it runs on, there is no cross-platform support. The tool will have options that allow packaged applications to be customized in various ways.
|
||||
|
||||
|
||||
## jpackage Options
|
||||
|
||||
### Generic Options:
|
||||
|
||||
`@`*filename*
|
||||
|
||||
: Read options from a file.
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-type">`--type` or `-t` *type*</a>
|
||||
: The type of package to create
|
||||
|
||||
Valid values are: {"app-image", "exe", "msi", "rpm", "deb", "pkg", "dmg"}
|
||||
|
||||
If this option is not specified a platform dependent
|
||||
default type will be created.
|
||||
|
||||
<a id="option-app-version">`--app-version` *version*</a>
|
||||
|
||||
: Version of the application and/or package
|
||||
|
||||
<a id="option-copyright">`--copyright` *copyright*</a>
|
||||
|
||||
: Copyright for the application
|
||||
|
||||
<a id="option-description">`--description` *description*</a>
|
||||
|
||||
: Description of the application
|
||||
|
||||
<a id="option-help">`--help` or `-h`</a>
|
||||
|
||||
: Print the usage text with a list and description of each valid
|
||||
option for the current platform to the output stream, and exit.
|
||||
|
||||
<a id="option-icon">`--icon` *path*</a>
|
||||
|
||||
: Path of the icon of the application package
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
<a id="option-name">`--name` or `-n` *name*</a>
|
||||
|
||||
: Name of the application and/or package
|
||||
|
||||
<a id="option-dest">`--dest` or `-d` *destination*</a>
|
||||
|
||||
: Path where generated output file is placed
|
||||
|
||||
(absolute path or relative to the current directory).
|
||||
|
||||
Defaults to the current working directory.
|
||||
|
||||
<a id="option-resource-dir">`--resource-dir` *path*</a>
|
||||
|
||||
: Path to override jpackage resources
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
Icons, template files, and other resources of jpackage can be
|
||||
over-ridden by adding replacement resources to this directory.
|
||||
|
||||
<a id="option-temp">`--temp` *directory*</a>
|
||||
|
||||
: Path of a new or empty directory used to create temporary files
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
If specified, the temp dir will not be removed upon the task
|
||||
completion and must be removed manually.
|
||||
|
||||
If not specified, a temporary directory will be created and
|
||||
removed upon the task completion.
|
||||
|
||||
<a id="option-vendor">`--vendor` *vendor*</a>
|
||||
|
||||
: Vendor of the application
|
||||
|
||||
<a id="option-verbose">`--verbose`</a>
|
||||
|
||||
: Enables verbose output.
|
||||
|
||||
<a id="option-version">`--version`</a>
|
||||
|
||||
: Print the product version to the output stream and exit.
|
||||
|
||||
### Options for creating the runtime image:
|
||||
|
||||
|
||||
<a id="option-add-modules">`--add-modules` *module-name* \[`,`*module-name*...\]</a>
|
||||
|
||||
: A comma (",") separated list of modules to add
|
||||
|
||||
This module list, along with the main module (if specified)
|
||||
will be passed to jlink as the --add-module argument.
|
||||
If not specified, either just the main module (if --module is
|
||||
specified), or the default set of modules (if --main-jar is
|
||||
specified) are used.
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-module-path">`--module-path` or `-p` *module-path* \[`,`*module-path*...\]</a>
|
||||
|
||||
: A File.pathSeparator separated list of paths
|
||||
|
||||
Each path is either a directory of modules or the path to a
|
||||
modular jar, and is absolute or relative to the current directory.
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-jlink-options">`--jlink-options` *options*</a>
|
||||
|
||||
: A space separated list of options to pass to jlink
|
||||
|
||||
If not specified, defaults to "--strip-native-commands
|
||||
--strip-debug --no-man-pages --no-header-files"
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-runtime-image">`--runtime-image` *directory*</a>
|
||||
|
||||
: Path of the predefined runtime image that will be copied into
|
||||
the application image
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
If --runtime-image is not specified, jpackage will run jlink to
|
||||
create the runtime image using options specified by --jlink-options.
|
||||
|
||||
### Options for creating the application image:
|
||||
|
||||
<a id="option-input">`--input` or `-i` *directory*</a>
|
||||
|
||||
: Path of the input directory that contains the files to be packaged
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
All files in the input directory will be packaged into the
|
||||
application image.
|
||||
|
||||
<a id="option-app-content">`--app-content` *additional-content* \[`,`*additional-content*...\]</a>
|
||||
|
||||
: A comma separated list of paths to files and/or directories
|
||||
to add to the application payload.
|
||||
|
||||
This option can be used more than once.
|
||||
|
||||
### Options for creating the application launcher(s):
|
||||
|
||||
|
||||
<a id="option-add-launcher">`--add-launcher` *name*=*path*</a>
|
||||
|
||||
: Name of launcher, and a path to a Properties file that contains
|
||||
a list of key, value pairs
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
The keys "module", "main-jar", "main-class", "description",
|
||||
"arguments", "java-options", "icon", "launcher-as-service",
|
||||
"win-console", "win-shortcut", "win-menu", and "linux-shortcut"
|
||||
can be used.
|
||||
|
||||
These options are added to, or used to overwrite, the original
|
||||
command line options to build an additional alternative launcher.
|
||||
The main application launcher will be built from the command line
|
||||
options. Additional alternative launchers can be built using
|
||||
this option, and this option can be used multiple times to
|
||||
build multiple additional launchers.
|
||||
|
||||
<a id="option-arguments">`--arguments` *arguments*</a>
|
||||
|
||||
: Command line arguments to pass to the main class if no command
|
||||
line arguments are given to the launcher
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-java-options">`--java-options` *options*</a>
|
||||
|
||||
: Options to pass to the Java runtime
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-main-class">`--main-class` *class-name*</a>
|
||||
|
||||
: Qualified name of the application main class to execute
|
||||
|
||||
This option can only be used if --main-jar is specified.
|
||||
|
||||
<a id="option-main-jar">`--main-jar` *main-jar*</a>
|
||||
|
||||
: The main JAR of the application; containing the main class
|
||||
(specified as a path relative to the input path)
|
||||
|
||||
Either --module or --main-jar option can be specified but not
|
||||
both.
|
||||
|
||||
<a id="option-module">`--module` or `-m` *module-name*[/*main-class*]</a>
|
||||
|
||||
: The main module (and optionally main class) of the application
|
||||
|
||||
This module must be located on the module path.
|
||||
|
||||
When this option is specified, the main module will be linked
|
||||
in the Java runtime image. Either --module or --main-jar
|
||||
option can be specified but not both.
|
||||
|
||||
|
||||
### Platform dependent options for creating the application launcher:
|
||||
|
||||
|
||||
#### Windows platform options (available only when running on Windows):
|
||||
|
||||
<a id="option-win-console">`--win-console`</a>
|
||||
|
||||
: Creates a console launcher for the application, should be
|
||||
specified for application which requires console interactions
|
||||
|
||||
#### macOS platform options (available only when running on macOS):
|
||||
|
||||
<a id="option-mac-package-identifier">`--mac-package-identifier` *identifier*</a>
|
||||
|
||||
: An identifier that uniquely identifies the application for macOS
|
||||
|
||||
Defaults to the main class name.
|
||||
|
||||
May only use alphanumeric (A-Z,a-z,0-9), hyphen (-),
|
||||
and period (.) characters.
|
||||
|
||||
<a id="option-mac-package-name">`--mac-package-name` *name*</a>
|
||||
|
||||
: Name of the application as it appears in the Menu Bar
|
||||
|
||||
This can be different from the application name.
|
||||
|
||||
This name must be less than 16 characters long and be suitable for
|
||||
displaying in the menu bar and the application Info window.
|
||||
Defaults to the application name.
|
||||
|
||||
<a id="option-mac-package-signing-prefix">`--mac-package-signing-prefix` *prefix*</a>
|
||||
|
||||
: When signing the application package, this value is prefixed to all
|
||||
components that need to be signed that don't have
|
||||
an existing package identifier.
|
||||
|
||||
<a id="option-mac-sign">`--mac-sign`</a>
|
||||
|
||||
: Request that the package or the predefined application image be signed.
|
||||
|
||||
<a id="option-mac-signing-keychain">`--mac-signing-keychain` *keychain-name*</a>
|
||||
|
||||
: Name of the keychain to search for the signing identity
|
||||
|
||||
If not specified, the standard keychains are used.
|
||||
|
||||
<a id="option-mac-signing-key-user-name">`--mac-signing-key-user-name` *name*</a>
|
||||
|
||||
: Team or user name portion in Apple signing identities
|
||||
|
||||
<a id="option-mac-app-store">`--mac-app-store`</a>
|
||||
|
||||
: Indicates that the jpackage output is intended for the Mac App Store.
|
||||
|
||||
<a id="option-mac-entitlements">`--mac-entitlements` *path*</a>
|
||||
|
||||
: Path to file containing entitlements to use when signing executables and libraries in the bundle
|
||||
|
||||
<a id="option-mac-app-category">`--mac-app-category` *category*</a>
|
||||
|
||||
: String used to construct LSApplicationCategoryType in application plist
|
||||
|
||||
The default value is "utilities".
|
||||
|
||||
### Options for creating the application package:
|
||||
|
||||
<a id="option-about-url">`--about-url` *url*</a>
|
||||
|
||||
: URL of the application's home page
|
||||
|
||||
<a id="option-app-image">`--app-image` *directory*</a>
|
||||
|
||||
: Location of the predefined application image that is used to build an installable package
|
||||
(on all platforms) or to be signed (on macOS)
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
<a id="option-file-associations">`--file-associations` *path*</a>
|
||||
|
||||
: Path to a Properties file that contains list of key, value pairs
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
The keys "extension", "mime-type", "icon", and "description"
|
||||
can be used to describe the association.
|
||||
|
||||
This option can be used multiple times.
|
||||
|
||||
<a id="option-install-dir">`--install-dir` *path*</a>
|
||||
|
||||
: Absolute path of the installation directory of the application (on macOS
|
||||
or linux), or relative sub-path of the installation directory
|
||||
such as "Program Files" or "AppData" (on Windows)
|
||||
|
||||
<a id="option-license-file">`--license-file` *path*</a>
|
||||
|
||||
: Path to the license file
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
<a id="option-application-package-runtime-image">`--runtime-image` *path*</a>
|
||||
|
||||
: Path of the predefined runtime image to install
|
||||
|
||||
(absolute path or relative to the current directory)
|
||||
|
||||
Option is required when creating a runtime installer.
|
||||
|
||||
<a id="option-launcher-as-service">`--launcher-as-service`</a>
|
||||
|
||||
: Request to create an installer that will register the main
|
||||
application launcher as a background service-type application.
|
||||
|
||||
|
||||
### Platform dependent options for creating the application package:
|
||||
|
||||
|
||||
#### Windows platform options (available only when running on Windows):
|
||||
|
||||
<a id="option-win-dir-chooser">`--win-dir-chooser`</a>
|
||||
|
||||
: Adds a dialog to enable the user to choose a directory in which
|
||||
the product is installed.
|
||||
|
||||
<a id="option-win-help-url">`--win-help-url` *url*</a>
|
||||
|
||||
: URL where user can obtain further information or technical support
|
||||
|
||||
<a id="option-win-menu">`--win-menu`</a>
|
||||
|
||||
: Request to add a Start Menu shortcut for this application
|
||||
|
||||
<a id="option-win-menu-group">`--win-menu-group` *menu-group-name*</a>
|
||||
|
||||
: Start Menu group this application is placed in
|
||||
|
||||
<a id="option-win-per-user-install">`--win-per-user-install`</a>
|
||||
|
||||
: Request to perform an install on a per-user basis
|
||||
|
||||
<a id="option-win-shortcut">`--win-shortcut`</a>
|
||||
|
||||
: Request to create a desktop shortcut for this application
|
||||
|
||||
<a id="option-win-shortcut-prompt">`--win-shortcut-prompt`</a>
|
||||
|
||||
: Adds a dialog to enable the user to choose if shortcuts will be created by installer
|
||||
|
||||
<a id="option-win-update-url">`--win-update-url` *url*</a>
|
||||
|
||||
: URL of available application update information
|
||||
|
||||
<a id="option-win-upgrade-uuid">`--win-upgrade-uuid` *id*</a>
|
||||
|
||||
: UUID associated with upgrades for this package
|
||||
|
||||
#### Linux platform options (available only when running on Linux):
|
||||
|
||||
<a id="option-linux-package-name">`--linux-package-name` *name*</a>
|
||||
|
||||
: Name for Linux package
|
||||
|
||||
Defaults to the application name.
|
||||
|
||||
<a id="option-linux-deb-maintainer">`--linux-deb-maintainer` *email-address*</a>
|
||||
|
||||
: Maintainer for .deb bundle
|
||||
|
||||
<a id="option-linux-menu-group">`--linux-menu-group` *menu-group-name*</a>
|
||||
|
||||
: Menu group this application is placed in
|
||||
|
||||
<a id="option-linux-package-deps">`--linux-package-deps`</a>
|
||||
|
||||
: Required packages or capabilities for the application
|
||||
|
||||
<a id="option-linux-rpm-license-type">`--linux-rpm-license-type` *type*</a>
|
||||
|
||||
: Type of the license ("License: *value*" of the RPM .spec)
|
||||
|
||||
<a id="option-linux-app-release">`--linux-app-release` *release*</a>
|
||||
|
||||
: Release value of the RPM \<name\>.spec file or
|
||||
Debian revision value of the DEB control file
|
||||
|
||||
<a id="option-linux-app-category">`--linux-app-category` *category-value*</a>
|
||||
|
||||
: Group value of the RPM /<name/>.spec file or
|
||||
Section value of DEB control file
|
||||
|
||||
<a id="option-linux-shortcut">`--linux-shortcut`</a>
|
||||
|
||||
: Creates a shortcut for the application.
|
||||
|
||||
#### macOS platform options (available only when running on macOS):
|
||||
|
||||
<a id="option-mac-dmg-content">`--mac-dmg-content` *additional-content* \[`,`*additional-content*...\]</a>
|
||||
|
||||
: Include all the referenced content in the dmg.
|
||||
|
||||
This option can be used more than once.
|
||||
|
||||
## jpackage Examples
|
||||
|
||||
```
|
||||
Generate an application package suitable for the host system:
|
||||
```
|
||||
For a modular application:
|
||||
jpackage -n name -p modulePath -m moduleName/className
|
||||
For a non-modular application:
|
||||
jpackage -i inputDir -n name \
|
||||
--main-class className --main-jar myJar.jar
|
||||
From a pre-built application image:
|
||||
jpackage -n name --app-image appImageDir
|
||||
|
||||
```
|
||||
Generate an application image:
|
||||
```
|
||||
For a modular application:
|
||||
jpackage --type app-image -n name -p modulePath \
|
||||
-m moduleName/className
|
||||
For a non-modular application:
|
||||
jpackage --type app-image -i inputDir -n name \
|
||||
--main-class className --main-jar myJar.jar
|
||||
To provide your own options to jlink, run jlink separately:
|
||||
jlink --output appRuntimeImage -p modulePath \
|
||||
--add-modules moduleName \
|
||||
--no-header-files [<additional jlink options>...]
|
||||
jpackage --type app-image -n name \
|
||||
-m moduleName/className --runtime-image appRuntimeImage
|
||||
|
||||
```
|
||||
Generate a Java runtime package:
|
||||
```
|
||||
jpackage -n name --runtime-image <runtime-image>
|
||||
|
||||
```
|
||||
Sign the predefined application image (on macOS):
|
||||
```
|
||||
jpackage --type app-image --app-image <app-image> \
|
||||
--mac-sign [<additional signing options>...]
|
||||
|
||||
Note: the only additional options that are permitted in this mode are:
|
||||
the set of additional mac signing options and --verbose
|
||||
|
||||
|
||||
## jpackage resource directory
|
||||
|
||||
Icons, template files, and other resources of jpackage can be over-ridden by
|
||||
adding replacement resources to this directory.
|
||||
jpackage will lookup files by specific names in the resource directory.
|
||||
|
||||
|
||||
### Resource directory files considered only when running on Linux:
|
||||
|
||||
`<launcher-name>.png`
|
||||
|
||||
: Application launcher icon
|
||||
|
||||
Default resource is *JavaApp.png*
|
||||
|
||||
`<launcher-name>.desktop`
|
||||
|
||||
: A desktop file to be used with `xdg-desktop-menu` command
|
||||
|
||||
Considered with application launchers registered for file associations and/or have an icon
|
||||
|
||||
Default resource is *template.desktop*
|
||||
|
||||
|
||||
#### Resource directory files considered only when building Linux DEB/RPM installer:
|
||||
|
||||
`<package-name>-<launcher-name>.service`
|
||||
|
||||
: systemd unit file for application launcher registered as a background service-type application
|
||||
|
||||
Default resource is *unit-template.service*
|
||||
|
||||
|
||||
#### Resource directory files considered only when building Linux RPM installer:
|
||||
|
||||
`<package-name>.spec`
|
||||
|
||||
: RPM spec file
|
||||
|
||||
Default resource is *template.spec*
|
||||
|
||||
|
||||
#### Resource directory files considered only when building Linux DEB installer:
|
||||
|
||||
`control`
|
||||
|
||||
: Control file
|
||||
|
||||
Default resource is *template.control*
|
||||
|
||||
`copyright`
|
||||
|
||||
: Copyright file
|
||||
|
||||
Default resource is *template.copyright*
|
||||
|
||||
`preinstall`
|
||||
|
||||
: Pre-install shell script
|
||||
|
||||
Default resource is *template.preinstall*
|
||||
|
||||
`prerm`
|
||||
|
||||
: Pre-remove shell script
|
||||
|
||||
Default resource is *template.prerm*
|
||||
|
||||
`postinstall`
|
||||
|
||||
: Post-install shell script
|
||||
|
||||
Default resource is *template.postinstall*
|
||||
|
||||
`postrm`
|
||||
|
||||
: Post-remove shell script
|
||||
|
||||
Default resource is *template.postrm*
|
||||
|
||||
|
||||
### Resource directory files considered only when running on Windows:
|
||||
|
||||
`<launcher-name>.ico`
|
||||
|
||||
: Application launcher icon
|
||||
|
||||
Default resource is *JavaApp.ico*
|
||||
|
||||
`<launcher-name>.properties`
|
||||
|
||||
: Properties file for application launcher executable
|
||||
|
||||
Default resource is *WinLauncher.template*
|
||||
|
||||
|
||||
#### Resource directory files considered only when building Windows MSI/EXE installer:
|
||||
|
||||
`<application-name>-post-image.wsf`
|
||||
|
||||
: A Windows Script File (WSF) to run after building application image
|
||||
|
||||
`main.wxs`
|
||||
|
||||
: Main WiX project file
|
||||
|
||||
Default resource is *main.wxs*
|
||||
|
||||
`overrides.wxi`
|
||||
|
||||
: Overrides WiX project file
|
||||
|
||||
Default resource is *overrides.wxi*
|
||||
|
||||
`service-installer.exe`
|
||||
|
||||
: Service installer executable
|
||||
|
||||
Considered if some application launchers are registered as background service-type applications
|
||||
|
||||
`<launcher-name>-service-install.wxi`
|
||||
|
||||
: Service installer WiX project file
|
||||
|
||||
Considered if some application launchers are registered as background service-type applications
|
||||
|
||||
Default resource is *service-install.wxi*
|
||||
|
||||
`<launcher-name>-service-config.wxi`
|
||||
|
||||
: Service installer WiX project file
|
||||
|
||||
Considered if some application launchers are registered as background service-type applications
|
||||
|
||||
Default resource is *service-config.wxi*
|
||||
|
||||
`InstallDirNotEmptyDlg.wxs`
|
||||
|
||||
: WiX project file for installer UI dialog checking installation directory doesn't exist or is empty
|
||||
|
||||
Default resource is *InstallDirNotEmptyDlg.wxs*
|
||||
|
||||
`ShortcutPromptDlg.wxs`
|
||||
|
||||
: WiX project file for installer UI dialog configuring shortcuts
|
||||
|
||||
Default resource is *ShortcutPromptDlg.wxs*
|
||||
|
||||
`bundle.wxf`
|
||||
|
||||
: WiX project file with the hierarchy of components of application image
|
||||
|
||||
`ui.wxf`
|
||||
|
||||
: WiX project file for installer UI
|
||||
|
||||
|
||||
#### Resource directory files considered only when building Windows EXE installer:
|
||||
|
||||
`WinInstaller.properties`
|
||||
|
||||
: Properties file for the installer executable
|
||||
|
||||
Default resource is *WinInstaller.template*
|
||||
|
||||
`<package-name>-post-msi.wsf`
|
||||
|
||||
: A Windows Script File (WSF) to run after building embedded MSI installer for EXE installer
|
||||
|
||||
|
||||
### Resource directory files considered only when running on macOS:
|
||||
|
||||
`<launcher-name>.icns`
|
||||
|
||||
: Application launcher icon
|
||||
|
||||
Default resource is *JavaApp.icns*
|
||||
|
||||
`Info.plist`
|
||||
|
||||
: Application property list file
|
||||
|
||||
Default resource is *Info-lite.plist.template*
|
||||
|
||||
`Runtime-Info.plist`
|
||||
|
||||
: Java Runtime property list file
|
||||
|
||||
Default resource is *Runtime-Info.plist.template*
|
||||
|
||||
`<application-name>.entitlements`
|
||||
|
||||
: Signing entitlements property list file
|
||||
|
||||
Default resource is *sandbox.plist*
|
||||
|
||||
|
||||
#### Resource directory files considered only when building macOS PKG/DMG installer:
|
||||
|
||||
`<package-name>-post-image.sh`
|
||||
|
||||
: Shell script to run after building application image
|
||||
|
||||
|
||||
#### Resource directory files considered only when building macOS PKG installer:
|
||||
|
||||
`uninstaller`
|
||||
|
||||
: Uninstaller shell script
|
||||
|
||||
Considered if some application launchers are registered as background service-type applications
|
||||
|
||||
Default resource is *uninstall.command.template*
|
||||
|
||||
`preinstall`
|
||||
|
||||
: Pre-install shell script
|
||||
|
||||
Default resource is *preinstall.template*
|
||||
|
||||
`postinstall`
|
||||
|
||||
: Post-install shell script
|
||||
|
||||
Default resource is *postinstall.template*
|
||||
|
||||
`services-preinstall`
|
||||
|
||||
: Pre-install shell script for services package
|
||||
|
||||
Considered if some application launchers are registered as background service-type applications
|
||||
|
||||
Default resource is *services-preinstall.template*
|
||||
|
||||
`services-postinstall`
|
||||
|
||||
: Post-install shell script for services package
|
||||
|
||||
Considered if some application launchers are registered as background service-type applications
|
||||
|
||||
Default resource is *services-postinstall.template*
|
||||
|
||||
`<package-name>-background.png`
|
||||
|
||||
: Background image
|
||||
|
||||
Default resource is *background_pkg.png*
|
||||
|
||||
`<package-name>-background-darkAqua.png`
|
||||
|
||||
: Dark background image
|
||||
|
||||
Default resource is *background_pkg.png*
|
||||
|
||||
`product-def.plist`
|
||||
|
||||
: Package property list file
|
||||
|
||||
Default resource is *product-def.plist*
|
||||
|
||||
`<package-name>-<launcher-name>.plist`
|
||||
|
||||
: launchd property list file for application launcher registered as a background service-type application
|
||||
|
||||
Default resource is *launchd.plist.template*
|
||||
|
||||
|
||||
#### Resource directory files considered only when building macOS DMG installer:
|
||||
|
||||
`<package-name>-dmg-setup.scpt`
|
||||
|
||||
: Setup AppleScript script
|
||||
|
||||
Default resource is *DMGsetup.scpt*
|
||||
|
||||
`<package-name>-license.plist`
|
||||
|
||||
: License property list file
|
||||
|
||||
Default resource is *lic_template.plist*
|
||||
|
||||
`<package-name>-background.tiff`
|
||||
|
||||
: Background image
|
||||
|
||||
Default resource is *background_dmg.tiff*
|
||||
|
||||
`<package-name>-volume.icns`
|
||||
|
||||
: Volume icon
|
||||
|
||||
Default resource is *JavaApp.icns*
|
File diff suppressed because it is too large
Load Diff
1042
src/jdk.jshell/share/man/jshell.md
Normal file
1042
src/jdk.jshell/share/man/jshell.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,219 +0,0 @@
|
||||
.\" Copyright (c) 2004, 2024, 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.19.2
|
||||
.\"
|
||||
.\" Define V font for inline verbatim, using C font in formats
|
||||
.\" that render this, and otherwise B font.
|
||||
.ie "\f[CB]x\f[R]"x" \{\
|
||||
. ftr V B
|
||||
. ftr VI BI
|
||||
. ftr VB B
|
||||
. ftr VBI BI
|
||||
.\}
|
||||
.el \{\
|
||||
. ftr V CR
|
||||
. ftr VI CI
|
||||
. ftr VB CB
|
||||
. ftr VBI CBI
|
||||
.\}
|
||||
.TH "JSTATD" "1" "2025" "JDK 24-ea" "JDK Commands"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
jstatd - monitor the creation and termination of instrumented Java
|
||||
HotSpot VMs
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]WARNING:\f[R] This command is experimental, unsupported, and
|
||||
deprecated.
|
||||
It will be removed in a future release.
|
||||
.PP
|
||||
\f[V]jstatd\f[R] [\f[I]options\f[R]]
|
||||
.TP
|
||||
\f[I]options\f[R]
|
||||
This represents the \f[V]jstatd\f[R] command-line options.
|
||||
See \f[B]Options for the jstatd Command\f[R].
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The \f[V]jstatd\f[R] command is an RMI server application that monitors
|
||||
for the creation and termination of instrumented Java HotSpot VMs and
|
||||
provides an interface to enable remote monitoring tools, \f[V]jstat\f[R]
|
||||
and \f[V]jps\f[R], to attach to JVMs that are running on the local host
|
||||
and collect information about the JVM process.
|
||||
.PP
|
||||
The \f[V]jstatd\f[R] server requires an RMI registry on the local host.
|
||||
The \f[V]jstatd\f[R] server attempts to attach to the RMI registry on
|
||||
the default port, or on the port you specify with the \f[V]-p\f[R]
|
||||
\f[V]port\f[R] option.
|
||||
If an RMI registry is not found, then one is created within the
|
||||
\f[V]jstatd\f[R] application that\[aq]s bound to the port that\[aq]s
|
||||
indicated by the \f[V]-p\f[R] \f[V]port\f[R] option or to the default
|
||||
RMI registry port when the \f[V]-p\f[R] \f[V]port\f[R] option is
|
||||
omitted.
|
||||
You can stop the creation of an internal RMI registry by specifying the
|
||||
\f[V]-nr\f[R] option.
|
||||
.SH OPTIONS FOR THE JSTATD COMMAND
|
||||
.TP
|
||||
\f[V]-nr\f[R]
|
||||
This option does not attempt to create an internal RMI registry within
|
||||
the \f[V]jstatd\f[R] process when an existing RMI registry isn\[aq]t
|
||||
found.
|
||||
.TP
|
||||
\f[V]-p\f[R] \f[I]port\f[R]
|
||||
This option sets the port number where the RMI registry is expected to
|
||||
be found, or when not found, created if the \f[V]-nr\f[R] option
|
||||
isn\[aq]t specified.
|
||||
.TP
|
||||
\f[V]-r\f[R] \f[I]rmiport\f[R]
|
||||
This option sets the port number to which the RMI connector is bound.
|
||||
If not specified a random available port is used.
|
||||
.TP
|
||||
\f[V]-n\f[R] \f[I]rminame\f[R]
|
||||
This option sets the name to which the remote RMI object is bound in the
|
||||
RMI registry.
|
||||
The default name is \f[V]JStatRemoteHost\f[R].
|
||||
If multiple \f[V]jstatd\f[R] servers are started on the same host, then
|
||||
the name of the exported RMI object for each server can be made unique
|
||||
by specifying this option.
|
||||
However, doing so requires that the unique server name be included in
|
||||
the monitoring client\[aq]s \f[V]hostid\f[R] and \f[V]vmid\f[R] strings.
|
||||
.TP
|
||||
\f[V]-J\f[R]\f[I]option\f[R]
|
||||
This option passes a Java \f[V]option\f[R] to the JVM, where the option
|
||||
is one of those described on the reference page for the Java application
|
||||
launcher.
|
||||
For example, \f[V]-J-Xms48m\f[R] sets the startup memory to 48 MB.
|
||||
See \f[B]java\f[R].
|
||||
.SH SECURITY
|
||||
.PP
|
||||
The \f[V]jstatd\f[R] server can monitor only JVMs for which it has the
|
||||
appropriate native access permissions.
|
||||
Therefore, the \f[V]jstatd\f[R] process must be running with the same
|
||||
user credentials as the target JVMs.
|
||||
Some user credentials, such as the root user in Linux and macOS
|
||||
operating systems, have permission to access the instrumentation
|
||||
exported by any JVM on the system.
|
||||
A \f[V]jstatd\f[R] process running with such credentials can monitor any
|
||||
JVM on the system, but introduces additional security concerns.
|
||||
.PP
|
||||
The \f[V]jstatd\f[R] server doesn\[aq]t provide any authentication of
|
||||
remote clients.
|
||||
Therefore, running a \f[V]jstatd\f[R] server process exposes the
|
||||
instrumentation export by all JVMs for which the \f[V]jstatd\f[R]
|
||||
process has access permissions to any user on the network.
|
||||
This exposure might be undesirable in your environment, and therefore,
|
||||
local security policies should be considered before you start the
|
||||
\f[V]jstatd\f[R] process, particularly in production environments or on
|
||||
networks that aren\[aq]t secure.
|
||||
.PP
|
||||
For security purposes, the \f[V]jstatd\f[R] server uses an RMI
|
||||
ObjectInputFilter to allow only essential classes to be deserialized.
|
||||
.PP
|
||||
If your security concerns can\[aq]t be addressed, then the safest action
|
||||
is to not run the \f[V]jstatd\f[R] server and use the \f[V]jstat\f[R]
|
||||
and \f[V]jps\f[R] tools locally.
|
||||
However, when using \f[V]jps\f[R] to get a list of instrumented JVMs,
|
||||
the list will not include any JVMs running in docker containers.
|
||||
.SH REMOTE INTERFACE
|
||||
.PP
|
||||
The interface exported by the \f[V]jstatd\f[R] process is proprietary
|
||||
and guaranteed to change.
|
||||
Users and developers are discouraged from writing to this interface.
|
||||
.SH EXAMPLES
|
||||
.PP
|
||||
The following are examples of the \f[V]jstatd\f[R] command.
|
||||
The \f[V]jstatd\f[R] scripts automatically start the server in the
|
||||
background.
|
||||
.SH INTERNAL RMI REGISTRY
|
||||
.PP
|
||||
This example shows how to start a \f[V]jstatd\f[R] session with an
|
||||
internal RMI registry.
|
||||
This example assumes that no other server is bound to the default RMI
|
||||
registry port (port \f[V]1099\f[R]).
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jstatd\f[R]
|
||||
.RE
|
||||
.SH EXTERNAL RMI REGISTRY
|
||||
.PP
|
||||
This example starts a \f[V]jstatd\f[R] session with an external RMI
|
||||
registry.
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
rmiregistry&
|
||||
jstatd
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
This example starts a \f[V]jstatd\f[R] session with an external RMI
|
||||
registry server on port \f[V]2020\f[R].
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jrmiregistry 2020&
|
||||
jstatd -p 2020
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
This example starts a \f[V]jstatd\f[R] session with an external RMI
|
||||
registry server on port \f[V]2020\f[R] and JMX connector bound to port
|
||||
\f[V]2021\f[R].
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
jrmiregistry 2020&
|
||||
jstatd -p 2020 -r 2021
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
This example starts a \f[V]jstatd\f[R] session with an external RMI
|
||||
registry on port 2020 that\[aq]s bound to
|
||||
\f[V]AlternateJstatdServerName\f[R].
|
||||
.IP
|
||||
.nf
|
||||
\f[CB]
|
||||
rmiregistry 2020&
|
||||
jstatd -p 2020 -n AlternateJstatdServerName
|
||||
\f[R]
|
||||
.fi
|
||||
.SH STOP THE CREATION OF AN IN-PROCESS RMI REGISTRY
|
||||
.PP
|
||||
This example starts a \f[V]jstatd\f[R] session that doesn\[aq]t create
|
||||
an RMI registry when one isn\[aq]t found.
|
||||
This example assumes an RMI registry is already running.
|
||||
If an RMI registry isn\[aq]t running, then an error message is
|
||||
displayed.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jstatd -nr\f[R]
|
||||
.RE
|
||||
.SH ENABLE RMI LOGGING
|
||||
.PP
|
||||
This example starts a \f[V]jstatd\f[R] session with RMI logging
|
||||
capabilities enabled.
|
||||
This technique is useful as a troubleshooting aid or for monitoring
|
||||
server activities.
|
||||
.RS
|
||||
.PP
|
||||
\f[V]jstatd -J-Djava.rmi.server.logCalls=true\f[R]
|
||||
.RE
|
180
src/jdk.jstatd/share/man/jstatd.md
Normal file
180
src/jdk.jstatd/share/man/jstatd.md
Normal file
@ -0,0 +1,180 @@
|
||||
---
|
||||
# Copyright (c) 2004, 2024, 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.
|
||||
#
|
||||
|
||||
title: 'JSTATD(1) JDK @@VERSION_SHORT@@ | JDK Commands'
|
||||
date: @@COPYRIGHT_YEAR@@
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Name
|
||||
|
||||
jstatd - monitor the creation and termination of instrumented Java HotSpot VMs
|
||||
|
||||
## Synopsis
|
||||
|
||||
**WARNING:** This command is experimental, unsupported, and deprecated. It will be removed in a future release.
|
||||
|
||||
`jstatd` \[*options*\]
|
||||
|
||||
*options*
|
||||
: This represents the `jstatd` command-line options. See [Options for the
|
||||
jstatd Command].
|
||||
|
||||
## Description
|
||||
|
||||
The `jstatd` command is an RMI server application that monitors for the
|
||||
creation and termination of instrumented Java HotSpot VMs and provides an
|
||||
interface to enable remote monitoring tools, `jstat` and `jps`, to attach to
|
||||
JVMs that are running on the local host and collect information about the JVM
|
||||
process.
|
||||
|
||||
The `jstatd` server requires an RMI registry on the local host. The `jstatd`
|
||||
server attempts to attach to the RMI registry on the default port, or on the
|
||||
port you specify with the `-p` `port` option. If an RMI registry is not found,
|
||||
then one is created within the `jstatd` application that's bound to the port
|
||||
that's indicated by the `-p` `port` option or to the default RMI registry port
|
||||
when the `-p` `port` option is omitted. You can stop the creation of an
|
||||
internal RMI registry by specifying the `-nr` option.
|
||||
|
||||
## Options for the jstatd Command
|
||||
|
||||
`-nr`
|
||||
: This option does not attempt to create an internal RMI registry within the
|
||||
`jstatd` process when an existing RMI registry isn't found.
|
||||
|
||||
`-p` *port*
|
||||
: This option sets the port number where the RMI registry is expected to be
|
||||
found, or when not found, created if the `-nr` option isn't specified.
|
||||
|
||||
`-r` *rmiport*
|
||||
: This option sets the port number to which the RMI connector is bound. If
|
||||
not specified a random available port is used.
|
||||
|
||||
`-n` *rminame*
|
||||
: This option sets the name to which the remote RMI object is bound in the
|
||||
RMI registry. The default name is `JStatRemoteHost`. If multiple `jstatd`
|
||||
servers are started on the same host, then the name of the exported RMI
|
||||
object for each server can be made unique by specifying this option.
|
||||
However, doing so requires that the unique server name be included in the
|
||||
monitoring client's `hostid` and `vmid` strings.
|
||||
|
||||
`-J`*option*
|
||||
: This option passes a Java `option` to the JVM, where the option is one of
|
||||
those described on the reference page for the Java application launcher.
|
||||
For example, `-J-Xms48m` sets the startup memory to 48 MB. See
|
||||
[java](java.html).
|
||||
|
||||
## Security
|
||||
|
||||
The `jstatd` server can monitor only JVMs for which it has the appropriate
|
||||
native access permissions. Therefore, the `jstatd` process must be running with
|
||||
the same user credentials as the target JVMs. Some user credentials, such as
|
||||
the root user in Linux and macOS operating systems, have
|
||||
permission to access the instrumentation exported by any JVM on the system. A
|
||||
`jstatd` process running with such credentials can monitor any JVM on the
|
||||
system, but introduces additional security concerns.
|
||||
|
||||
The `jstatd` server doesn't provide any authentication of remote clients.
|
||||
Therefore, running a `jstatd` server process exposes the instrumentation export
|
||||
by all JVMs for which the `jstatd` process has access permissions to any user
|
||||
on the network. This exposure might be undesirable in your environment, and
|
||||
therefore, local security policies should be considered before you start the
|
||||
`jstatd` process, particularly in production environments or on networks that
|
||||
aren't secure.
|
||||
|
||||
For security purposes, the `jstatd` server uses an RMI ObjectInputFilter to allow
|
||||
only essential classes to be deserialized.
|
||||
|
||||
If your security concerns can't be addressed,
|
||||
then the safest action is to not run the `jstatd` server and use the `jstat`
|
||||
and `jps` tools locally. However, when using `jps` to get a list of
|
||||
instrumented JVMs, the list will not include any JVMs running in docker
|
||||
containers.
|
||||
|
||||
## Remote Interface
|
||||
|
||||
The interface exported by the `jstatd` process is proprietary and guaranteed to
|
||||
change. Users and developers are discouraged from writing to this interface.
|
||||
|
||||
## Examples
|
||||
|
||||
The following are examples of the `jstatd` command. The `jstatd` scripts
|
||||
automatically start the server in the background.
|
||||
|
||||
## Internal RMI Registry
|
||||
|
||||
This example shows how to start a `jstatd` session with an internal RMI
|
||||
registry. This example assumes that no other server is bound to the default RMI
|
||||
registry port (port `1099`).
|
||||
|
||||
> `jstatd`
|
||||
|
||||
## External RMI Registry
|
||||
|
||||
This example starts a `jstatd` session with an external RMI registry.
|
||||
|
||||
```
|
||||
rmiregistry&
|
||||
jstatd
|
||||
```
|
||||
|
||||
This example starts a `jstatd` session with an external RMI registry server on
|
||||
port `2020`.
|
||||
|
||||
```
|
||||
jrmiregistry 2020&
|
||||
jstatd -p 2020
|
||||
```
|
||||
|
||||
This example starts a `jstatd` session with an external RMI registry server on
|
||||
port `2020` and JMX connector bound to port `2021`.
|
||||
|
||||
```
|
||||
jrmiregistry 2020&
|
||||
jstatd -p 2020 -r 2021
|
||||
```
|
||||
|
||||
This example starts a `jstatd` session with an external RMI registry on port
|
||||
2020 that's bound to `AlternateJstatdServerName`.
|
||||
|
||||
```
|
||||
rmiregistry 2020&
|
||||
jstatd -p 2020 -n AlternateJstatdServerName
|
||||
```
|
||||
|
||||
## Stop the Creation of an In-Process RMI Registry
|
||||
|
||||
This example starts a `jstatd` session that doesn't create an RMI registry when
|
||||
one isn't found. This example assumes an RMI registry is already running. If an
|
||||
RMI registry isn't running, then an error message is displayed.
|
||||
|
||||
> `jstatd -nr`
|
||||
|
||||
## Enable RMI Logging
|
||||
|
||||
This example starts a `jstatd` session with RMI logging capabilities enabled.
|
||||
This technique is useful as a troubleshooting aid or for monitoring server
|
||||
activities.
|
||||
|
||||
> `jstatd
|
||||
-J-Djava.rmi.server.logCalls=true`
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2021, 2024, 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
|
||||
@ -138,7 +138,7 @@ public class CheckManPageOptions {
|
||||
}
|
||||
|
||||
Path findDefaultFile() {
|
||||
return findRootDir().resolve("src/jdk.javadoc/share/man/javadoc.1");
|
||||
return findRootDir().resolve("src/jdk.javadoc/share/man/javadoc.md");
|
||||
}
|
||||
|
||||
Path findRootDir() {
|
||||
@ -264,29 +264,32 @@ public class CheckManPageOptions {
|
||||
var list = new ArrayList<String>();
|
||||
// In the Markdown man page, options are defined in one of two forms:
|
||||
// 1. options delegated to javac appear in lines of the form
|
||||
// - `-...
|
||||
// * <span id="...">`-...</span>
|
||||
// 2. options implemented by the tool or doclet appear in lines of the form
|
||||
// `-...`
|
||||
// <span id="...">`-...</span>
|
||||
|
||||
Pattern p1 = Pattern.compile("\\R- `-.*");
|
||||
Pattern p2 = Pattern.compile("\\R`-.*");
|
||||
Pattern p1 = Pattern.compile("\\R* <span id=\"[^\"]+\">`-.*</span>");
|
||||
Pattern p2 = Pattern.compile("\\R<span id=\"[^\"]+\">`-.*</span>");
|
||||
Pattern outer = Pattern.compile("(" + p1.pattern() + "|" + p2.pattern() + ")");
|
||||
Matcher outerMatcher = outer.matcher(page);
|
||||
|
||||
// In the defining areas, option names are represented as follows:
|
||||
// `OPTION`
|
||||
// where OPTION is the shortest string not containing whitespace or colon
|
||||
Pattern inner = Pattern.compile("\\s`([^:`]+)");
|
||||
// `OPTION` or `OPTION`
|
||||
// where OPTION is the shortest string not containing whitespace or colon,
|
||||
// and in which all '-' characters are escaped with a single backslash.
|
||||
Pattern inner = Pattern.compile("[>\\s]`(-[^ :]+?)(:|`)");
|
||||
|
||||
while (outerMatcher.find()) {
|
||||
String lines = outerMatcher.group();
|
||||
out.println("found:" + lines + "\n");
|
||||
out.println("found:" + lines);
|
||||
|
||||
Matcher innerMatcher = inner.matcher(lines);
|
||||
while (innerMatcher.find()) {
|
||||
String option = innerMatcher.group(1);
|
||||
out.println(" found option:" + option);
|
||||
list.add(option);
|
||||
}
|
||||
out.println();
|
||||
}
|
||||
|
||||
return list;
|
||||
|
Loading…
Reference in New Issue
Block a user