Bytebuddy - 代理 premain 的参数
Bytebuddy - Arguments for agent premain
我有一个 premain 如下,用于将代理附加到远程进程。
public static void premain(String args, Instrumentation instrumentation) {
System.out.println("Premain");
File file ;
try {
file = (new File("Agent.jar"));
ByteBuddyAgent.attach(file,"18467");
}
catch (Exception e)
{
e.printStackTrace();
}
}
在这里,我想传递进程 ID 和其他几个参数。有没有办法做到这一点。看起来它只需要一个参数。
java -javaagent:/path/to/agent.jar -cp jar-under-test.jar Foo.Main
我怎样才能在这里传递参数?
您需要以您认为合适的任何方式对参数进行编码。不要像 main
的参数那样使用空格,例如使用逗号,但转义所有现有的逗号,例如将它们加倍。在代理中,用单个逗号分隔并反转结果段的转义。
我有一个 premain 如下,用于将代理附加到远程进程。
public static void premain(String args, Instrumentation instrumentation) {
System.out.println("Premain");
File file ;
try {
file = (new File("Agent.jar"));
ByteBuddyAgent.attach(file,"18467");
}
catch (Exception e)
{
e.printStackTrace();
}
}
在这里,我想传递进程 ID 和其他几个参数。有没有办法做到这一点。看起来它只需要一个参数。
java -javaagent:/path/to/agent.jar -cp jar-under-test.jar Foo.Main
我怎样才能在这里传递参数?
您需要以您认为合适的任何方式对参数进行编码。不要像 main
的参数那样使用空格,例如使用逗号,但转义所有现有的逗号,例如将它们加倍。在代理中,用单个逗号分隔并反转结果段的转义。