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 的参数那样使用空格,例如使用逗号,但转义所有现有的逗号,例如将它们加倍。在代理中,用单个逗号分隔并反转结果段的转义。