How do I pass arguments to a java.lang.instrument
instrumentation agent? The documentation simply states:
-javaagent:
jarpath[=options]
What options can I select?
Java agents are part of the Java Instrumentation API. The Instrumentation APIs provide a mechanism to modify bytecodes of methods. This can be done both statically and dynamically. This means that we can change a program by adding code to it without having to touch upon the actual source code of the program.
Java agents are a special type of class which, by using the Java Instrumentation API, can intercept applications running on the JVM, modifying their bytecode.
To pass arguments to a Java agent, append them after the equals sign:
java -javaagent:/path/to/agent.jar=argumentstring -cp jar-under-test.jar Foo.Main
The arguments are treated as a single string and passed to your premain
method. You are responsible for any further processing of the arguments, e.g. splitting on commas or separating key=value
pairs.
public static void premain(String agentArgument,Instrumentation instrumentation){
// args passed in 'agentArgument'
}
Note: if you don't pass any arguments to your agent (i.e. omitting the equals sign), the agentArgument
argument will be null, rather than an empty string.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With