如何向Java Instrumentation代理传递参数?

18
如何将参数传递给java.lang.instrument代理程序?文档仅说明:

-javaagent:jarpath[=options]

我可以选择什么选项

1个回答

31
在Java代理程序中传递参数,需在等号后添加它们:
java -javaagent:/path/to/agent.jar=argumentstring -cp jar-under-test.jar Foo.Main

参数被视为单个字符串并传递到您的premain方法中。您需要负责进一步处理参数,例如按逗号分隔或分离key=value对。

public static void premain(String agentArgument,Instrumentation instrumentation){
  // args passed in 'agentArgument'
}

注意:如果您没有向代理传递任何参数(即省略等号),则agentArgument参数将是null而不是空字符串。

Note: 如果你未向你的代理传递任何参数(即省略等号),那么`agentArgument`参数将为`null`,而不是空字符串。

1
如何传递一个非空的 instrumentation 参数? - philburns
JVM 提供了仪器,但这不是用户可控的。 - Walter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接