jdk/src/share/classes/java/lang/instrument/package.html
author alanb
Fri, 25 Jan 2013 13:09:47 +0000
changeset 15306 4d1877e73daa
parent 5506 202f599c92aa
child 23010 6dadb192ad81
permissions -rw-r--r--
8006565: java.lang.instrument specification should make it clear that -javaagent is optional Reviewed-by: sla, dcubed, mchung
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1935
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
     1
<!--
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 1935
diff changeset
     2
 Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
1935
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
     3
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
     4
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
     5
 This code is free software; you can redistribute it and/or modify it
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
     6
 under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 1935
diff changeset
     7
 published by the Free Software Foundation.  Oracle designates this
1935
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
     8
 particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 1935
diff changeset
     9
 by Oracle in the LICENSE file that accompanied this code.
1935
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    10
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    11
 This code is distributed in the hope that it will be useful, but WITHOUT
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    12
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    13
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    14
 version 2 for more details (a copy is included in the LICENSE file that
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    15
 accompanied this code).
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    16
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    17
 You should have received a copy of the GNU General Public License version
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    18
 2 along with this work; if not, write to the Free Software Foundation,
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    19
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    20
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 1935
diff changeset
    21
 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 1935
diff changeset
    22
 or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 1935
diff changeset
    23
 questions.
1935
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    24
-->
4010e03f8c1c 6719182: update legal notice in java/lang/instrument/package.html
darcy
parents: 2
diff changeset
    25
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
<html>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
<head>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
<!--
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
  Copyright 2003 Wily Technology, Inc.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
-->
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
</head>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
<body bgcolor="white">
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
Provides services that allow Java programming language agents to instrument programs running on the JVM. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
The mechanism for instrumentation is modification of the byte-codes of methods.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
<h2>Package Specification</h2>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
<P> 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
An agent is deployed as a JAR file. An attribute in the JAR file manifest specifies the
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
agent class which will be loaded to start the agent. For implementations that support a command-line 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
interface, an agent is started by specifying an option on the command-line.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
Implementations may also support a mechanism to start agents some time after the VM has
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
started. For example, an implementation may provide a mechanism that allows a tool to 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
<i>attach</i> to a running application, and initiate the loading of the tool's agent into
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
the running application. The details as to how the load is initiated, is implementation
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
dependent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
<h3>Command-Line Interface</h3>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
<P> 
15306
4d1877e73daa 8006565: java.lang.instrument specification should make it clear that -javaagent is optional
alanb
parents: 5506
diff changeset
    56
An implementation is not required to provide a way to start agents from the
4d1877e73daa 8006565: java.lang.instrument specification should make it clear that -javaagent is optional
alanb
parents: 5506
diff changeset
    57
command-line interface. On implementations that do provide a way to start agents
4d1877e73daa 8006565: java.lang.instrument specification should make it clear that -javaagent is optional
alanb
parents: 5506
diff changeset
    58
from the command-line interface, an agent is started by adding this option to
4d1877e73daa 8006565: java.lang.instrument specification should make it clear that -javaagent is optional
alanb
parents: 5506
diff changeset
    59
the command-line:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
<code><b>-javaagent:</b></code><i>jarpath[</i><code><b>=</b></code><i>options]</i>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
<i>jarpath</i> is the path to the agent JAR file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
<i>options</i> is the agent options.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
This switch may be used multiple times on the same command-line, 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
thus creating multiple agents.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
More than one agent may use the same <i>jarpath</i>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
An agent JAR file must conform to the JAR file specification.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
The manifest of the agent JAR file must contain the attribute <code>Premain-Class</code>. The
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
value of this attribute is the name of the <i>agent class</i>. The agent class must implement a 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
public static <code>premain</code> method similar in principle to the <code>main</code> application 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
entry point.  After the Java Virtual Machine (JVM) has initialized, each <code>premain</code> method 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
will be called in the order the agents were specified, then the real application
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
<code>main</code> method will be called. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
Each <code>premain</code> method must return in order for the startup sequence to proceed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
The <code>premain</code> method has one of two possible signatures. The JVM first attempts to
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
invoke the following method on the agent class:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
premain(String agentArgs, Instrumentation inst);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
If the agent class does not implement this method then the JVM will attempt to invoke:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
premain(String agentArgs);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
The agent class may also have an <code>agentmain</code> method for use when the agent is started 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
after VM startup. When the agent is started using a command-line option, the <code>agentmain</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
method is not invoked.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
The agent class will be loaded by the system class loader
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
(see {@link java.lang.ClassLoader#getSystemClassLoader ClassLoader.getSystemClassLoader}). This is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
the class loader which typically loads the class containing the application <code>main</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
The <code>premain</code> methods will be run under the same security and classloader 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
rules as the application <code>main</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
There are no modeling restrictions on what the agent <code>premain</code> method may do.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
Anything application <code>main</code> can do, including creating threads, is legal from <code>premain</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
Each agent is passed its agent options via the <code>agentArgs</code> parameter.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
The agent options are passed as a single string,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
any additional parsing should be performed by the agent itself.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
If the agent cannot be resolved 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
(for example, because the agent class cannot be loaded,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
or because the agent class does not have an appropriate <code>premain</code> method), the JVM will abort.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
If a <code>premain</code> method throws an uncaught exception, the JVM will abort.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
<h3>Starting Agents After VM Startup</h3>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
<p>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
An implementation may provide a mechanism to start agents sometime after the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
the VM has started. The details as to how this is initiated are implementation 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
specific but typically the application has already started and its <code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
main</code> method has already been invoked. In cases where an implementation
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
supports the starting of agents after the VM has started the following applies:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
<ol>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
  <li><p>The manifest of the agent JAR must contain the attribute <code>Agent-Class</code>. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
      The value of this attribute is the name of the <i>agent class</i>. </p></li> 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
      
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
  <li><p>The agent class must implement a public static <code>agentmain</code> method. </p></li>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
  <li><p>The system class loader (
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
      {@link java.lang.ClassLoader#getSystemClassLoader ClassLoader.getSystemClassLoader}) must
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
      support a mechanism to add an agent JAR file to the system class path. <p></li>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
</ol>  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
The agent JAR is appended to the system class path. This is the class loader that typically loads 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
the class containing the application <code>main</code> method. The agent class is loaded and the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
JVM attempts to invoke the <code>agentmain</code> method. The JVM first attempts to invoke 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
the following method on the agent class:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
agentmain(String agentArgs, Instrumentation inst);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
If the agent class does not implement this method then the JVM will attempt to invoke:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
agentmain(String agentArgs);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
The agent class may also have an <code>premain</code> method for use when the agent is started
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
using a command-line option. When the agent is started after VM startup the <code>premain</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
method is not invoked.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
The agent is passed its agent options via the <code>agentArgs</code> parameter.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
The agent options are passed as a single string,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
any additional parsing should be performed by the agent itself. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
The <code>agentmain</code> method should do any necessary initialization 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
required to start the agent. When startup is complete the method should 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
return. If the agent cannot be started
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
(for example, because the agent class cannot be loaded,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
or because the agent class does not have a conformant <code>agentmain</code> method), the JVM will
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
not abort. If the <code>agentmain</code> method throws an uncaught exception it will be ignored.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
<h3>Manifest Attributes</h3>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
The following manifest attributes are defined for an agent JAR file:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
<dl>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
<dt><code>Premain-Class</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
                        When an agent is specified at JVM launch time this attribute
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
			specifies the agent class.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
			That is, the class containing the <code>premain</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
                        When an agent is specified at JVM launch time this attribute
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
			is required. If the attribute is not present the JVM will abort.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
                        Note: this is a class name, not a file name or path.							
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
<dt><code>Agent-Class</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
                        If an implementation supports a mechanism to start agents 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
                        sometime after the VM has started then this attribute specifies
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
                        the agent class.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
                        That is, the class containing the <code>agentmain</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
                        This attribute is required, if it is not present the agent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
                        will not be started.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
                        Note: this is a class name, not a file name or path.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
</dd>			
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
<dt><code>Boot-Class-Path</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
                        A list of paths to be searched by the bootstrap class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
                        loader. Paths represent directories or libraries
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
                        (commonly referred to as JAR or zip libraries on
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
                        many platforms). 			
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
                        These paths are searched by the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
                        bootstrap class loader after the platform specific
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
                        mechanisms of locating a class have failed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
                        Paths are searched in the order listed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
                        Paths in the list are separated by one or more spaces.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
                        A path takes the syntax of the path component of a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
                        hierarchical URI. The path is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
                        absolute if it begins with a slash character ('/'),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
                        otherwise it is relative. A relative path is resolved
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
                        against the absolute path of the agent JAR file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
                        Malformed and non-existent paths are ignored.	
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
			When an agent is started sometime after the VM has
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
			started then paths that do not represent a JAR file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
			are ignored.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
                        This attribute is optional.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
<dt><code>Can-Redefine-Classes</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
                        Boolean (<code>true</code> or <code>false</code>, case irrelevant).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
                        Is the ability to redefine classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
                        needed by this agent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
                        Values other than <code>true</code> are considered <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
                        This attribute is optional, the default is <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
<dt><code>Can-Retransform-Classes</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
                        Boolean (<code>true</code> or <code>false</code>, case irrelevant).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
                        Is the ability to retransform classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
                        needed by this agent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
                        Values other than <code>true</code> are considered <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
                        This attribute is optional, the default is <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
<dt><code>Can-Set-Native-Method-Prefix</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
                        Boolean (<code>true</code> or <code>false</code>, case irrelevant).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
                        Is the ability to set native method prefix needed by this agent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
                        Values other than <code>true</code> are considered <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
                        This attribute is optional, the default is <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
</dl>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
<p> 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
An agent JAR file may have both the <code>Premain-Class</code> and <code>Agent-Class</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
attributes present in the manifest. When the agent is started on the command-line using
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
the <code>-javaagent</code> option then the <code>Premain-Class</code> attribute
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
specifies the name of the agent class and the <code>Agent-Class</code> attribute is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
ignored. Similarly, if the agent is started sometime after the VM has started, then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
the <code>Agent-Class</code> attribute specifies the name of the agent class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
(the value of <code>Premain-Class</code> attribute is ignored).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
<h2>Related Documentation</h2>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
For tool documentation, please see:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
<ul>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
  <li><a href="{@docRoot}/../technotes/tools/index.html">JDK Tools and Utilities</a>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
</ul>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
@since JDK1.5
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
@revised 1.6
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
</body>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
</html>