jdk/src/share/classes/java/lang/instrument/package.html
author ohair
Tue, 25 May 2010 15:58:33 -0700
changeset 5506 202f599c92aa
parent 1935 4010e03f8c1c
child 15306 4d1877e73daa
permissions -rw-r--r--
6943119: Rebrand source copyright notices Reviewed-by: darcy, weijun
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> 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
On implementations with a command-line interface, an agent is started by
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
adding this option to the command-line:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
<code><b>-javaagent:</b></code><i>jarpath[</i><code><b>=</b></code><i>options]</i>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
<i>jarpath</i> is the path to the agent JAR file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
<i>options</i> is the agent options.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
This switch may be used multiple times on the same command-line, 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
thus creating multiple agents.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
More than one agent may use the same <i>jarpath</i>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
An agent JAR file must conform to the JAR file specification.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
The manifest of the agent JAR file must contain the attribute <code>Premain-Class</code>. The
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
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
    71
public static <code>premain</code> method similar in principle to the <code>main</code> application 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
entry point.  After the Java Virtual Machine (JVM) has initialized, each <code>premain</code> method 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
will be called in the order the agents were specified, then the real application
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
<code>main</code> method will be called. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
Each <code>premain</code> method must return in order for the startup sequence to proceed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
The <code>premain</code> method has one of two possible signatures. The JVM first attempts to
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
invoke the following method on the agent class:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
premain(String agentArgs, Instrumentation inst);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
If the agent class does not implement this method then the JVM will attempt to invoke:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
premain(String agentArgs);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
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
    98
after VM startup. When the agent is started using a command-line option, the <code>agentmain</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
method is not invoked.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
The agent class will be loaded by the system class loader
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
(see {@link java.lang.ClassLoader#getSystemClassLoader ClassLoader.getSystemClassLoader}). This is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
the class loader which typically loads the class containing the application <code>main</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
The <code>premain</code> methods will be run under the same security and classloader 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
rules as the application <code>main</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
There are no modeling restrictions on what the agent <code>premain</code> method may do.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
Anything application <code>main</code> can do, including creating threads, is legal from <code>premain</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
Each agent is passed its agent options via the <code>agentArgs</code> parameter.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
The agent options are passed as a single string,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
any additional parsing should be performed by the agent itself.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
If the agent cannot be resolved 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
(for example, because the agent class cannot be loaded,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
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
   120
If a <code>premain</code> method throws an uncaught exception, the JVM will abort.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
<h3>Starting Agents After VM Startup</h3>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
<p>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
An implementation may provide a mechanism to start agents sometime after the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
the VM has started. The details as to how this is initiated are implementation 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
specific but typically the application has already started and its <code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
main</code> method has already been invoked. In cases where an implementation
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
supports the starting of agents after the VM has started the following applies:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
<ol>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
  <li><p>The manifest of the agent JAR must contain the attribute <code>Agent-Class</code>. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
      The value of this attribute is the name of the <i>agent class</i>. </p></li> 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
      
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
  <li><p>The agent class must implement a public static <code>agentmain</code> method. </p></li>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
  <li><p>The system class loader (
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
      {@link java.lang.ClassLoader#getSystemClassLoader ClassLoader.getSystemClassLoader}) must
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
      support a mechanism to add an agent JAR file to the system class path. <p></li>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
</ol>  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
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
   146
the class containing the application <code>main</code> method. The agent class is loaded and the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
JVM attempts to invoke the <code>agentmain</code> method. The JVM first attempts to invoke 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
the following method on the agent class:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
agentmain(String agentArgs, Instrumentation inst);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
If the agent class does not implement this method then the JVM will attempt to invoke:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
<code>public static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
agentmain(String agentArgs);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
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
   167
using a command-line option. When the agent is started after VM startup the <code>premain</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
method is not invoked.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
The agent is passed its agent options via the <code>agentArgs</code> parameter.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
The agent options are passed as a single string,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
any additional parsing should be performed by the agent itself. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
<P>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
The <code>agentmain</code> method should do any necessary initialization 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
required to start the agent. When startup is complete the method should 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
return. If the agent cannot be started
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
(for example, because the agent class cannot be loaded,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
or because the agent class does not have a conformant <code>agentmain</code> method), the JVM will
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
not abort. If the <code>agentmain</code> method throws an uncaught exception it will be ignored.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
<h3>Manifest Attributes</h3>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
The following manifest attributes are defined for an agent JAR file:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
<blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
<dl>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
<dt><code>Premain-Class</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
                        When an agent is specified at JVM launch time this attribute
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
			specifies the agent class.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
			That is, the class containing the <code>premain</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
                        When an agent is specified at JVM launch time this attribute
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
			is required. If the attribute is not present the JVM will abort.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
                        Note: this is a class name, not a file name or path.							
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
<dt><code>Agent-Class</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
                        If an implementation supports a mechanism to start agents 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
                        sometime after the VM has started then this attribute specifies
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
                        the agent class.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
                        That is, the class containing the <code>agentmain</code> method.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
                        This attribute is required, if it is not present the agent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
                        will not be started.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
                        Note: this is a class name, not a file name or path.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
</dd>			
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
<dt><code>Boot-Class-Path</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
                        A list of paths to be searched by the bootstrap class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
                        loader. Paths represent directories or libraries
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
                        (commonly referred to as JAR or zip libraries on
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
                        many platforms). 			
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
                        These paths are searched by the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
                        bootstrap class loader after the platform specific
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
                        mechanisms of locating a class have failed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
                        Paths are searched in the order listed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
                        Paths in the list are separated by one or more spaces.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
                        A path takes the syntax of the path component of a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
                        hierarchical URI. The path is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
                        absolute if it begins with a slash character ('/'),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
                        otherwise it is relative. A relative path is resolved
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
                        against the absolute path of the agent JAR file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
                        Malformed and non-existent paths are ignored.	
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
			When an agent is started sometime after the VM has
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
			started then paths that do not represent a JAR file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
			are ignored.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
                        This attribute is optional.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
<dt><code>Can-Redefine-Classes</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
                        Boolean (<code>true</code> or <code>false</code>, case irrelevant).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
                        Is the ability to redefine classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
                        needed by this agent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
                        Values other than <code>true</code> are considered <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
                        This attribute is optional, the default is <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
<dt><code>Can-Retransform-Classes</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
                        Boolean (<code>true</code> or <code>false</code>, case irrelevant).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
                        Is the ability to retransform classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
                        needed by this agent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
                        Values other than <code>true</code> are considered <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
                        This attribute is optional, the default is <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
<dt><code>Can-Set-Native-Method-Prefix</code></dt>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
<dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
                        Boolean (<code>true</code> or <code>false</code>, case irrelevant).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
                        Is the ability to set native method prefix needed by this agent.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
                        Values other than <code>true</code> are considered <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
                        This attribute is optional, the default is <code>false</code>.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
</dd>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
</dl>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
</blockquote>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
<p> 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
An agent JAR file may have both the <code>Premain-Class</code> and <code>Agent-Class</code>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
attributes present in the manifest. When the agent is started on the command-line using
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
the <code>-javaagent</code> option then the <code>Premain-Class</code> attribute
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
specifies the name of the agent class and the <code>Agent-Class</code> attribute is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
ignored. Similarly, if the agent is started sometime after the VM has started, then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
the <code>Agent-Class</code> attribute specifies the name of the agent class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
(the value of <code>Premain-Class</code> attribute is ignored).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
<h2>Related Documentation</h2>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
For tool documentation, please see:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
<ul>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
  <li><a href="{@docRoot}/../technotes/tools/index.html">JDK Tools and Utilities</a>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
</ul>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
@since JDK1.5
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
@revised 1.6
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
</body>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
</html>