public class HotSwapAgent extends Object
redefine(Class, CtClass)
and redefine(Class[], CtClass[])
, which replace the
existing class definition with a new one.
These methods perform the replacement by
java.lang.instrument.Instrumentation
. For details
of acceptable modification,
see the Instrumentation
interface.
Before calling the redefine
methods, the hotswap agent
has to be deployed.
To create a hotswap agent, run createAgentJarFile(String)
.
For example, the following command creates an agent file named hotswap.jar
.
$ jshell --class-path javassist.jar jshell> javassist.util.HotSwapAgent.createAgentJarFile("hotswap.jar")
Then, run the JVM with the VM argument -javaagent:hotswap.jar
to deploy the hotswap agent.
If the -javaagent
option is not given to the JVM, HotSwapAgent
attempts to automatically create and start the hotswap agent on demand.
This automated deployment may fail. If it fails, manually create the hotswap agent
and deploy it by -javaagent
.
The HotSwapAgent
requires tools.jar
as well as javassist.jar
.
The idea of this class was given by Adam Lugowski.
Shigeru Chiba wrote this class by referring
to his RedefineClassAgent
.
For details, see this discussion.
redefine(Class, CtClass)
,
redefine(Class[], CtClass[])
Constructor | Description |
---|---|
HotSwapAgent() |
Modifier and Type | Method | Description |
---|---|---|
static void |
agentmain(String agentArgs,
Instrumentation inst) |
The entry point invoked when this agent is started after the JVM starts.
|
static File |
createAgentJarFile(String fileName) |
Creates an agent file for using
HotSwapAgent . |
Instrumentation |
instrumentation() |
Obtains the
Instrumentation object. |
static void |
premain(String agentArgs,
Instrumentation inst) |
The entry point invoked when this agent is started by
-javaagent . |
static void |
redefine(Class<?>[] oldClasses,
CtClass[] newClasses) |
Redefines classes.
|
static void |
redefine(Class<?> oldClass,
CtClass newClass) |
Redefines a class.
|
public Instrumentation instrumentation()
Instrumentation
object.public static void premain(String agentArgs, Instrumentation inst) throws Throwable
-javaagent
.Throwable
public static void agentmain(String agentArgs, Instrumentation inst) throws Throwable
Throwable
public static void redefine(Class<?> oldClass, CtClass newClass) throws NotFoundException, IOException, CannotCompileException
public static void redefine(Class<?>[] oldClasses, CtClass[] newClasses) throws NotFoundException, IOException, CannotCompileException
public static File createAgentJarFile(String fileName) throws IOException, CannotCompileException, NotFoundException
HotSwapAgent
.Copyright © 2018 Shigeru Chiba, www.javassist.org. All rights reserved.