我正在尝试使用javaagent获取主程序代理。假设我输入了如下内容:
java -jar -javaagent:[path of agent file] foo.jar arg0 arg1 arg2javaagent应打印:
arg0 arg1 arg2我试过使用下面的代码:
public static void premain(String ignoredArgs, Instrumentation ignoredVar){
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMXBean.getInputArguments();
System.out.println(arguments);
}但它只打印-javaagent参数和自身之前的参数。有什么帮助吗?
发布于 2018-08-24 16:48:49
我的方法是使用代理本身检测所有public static main(String[] args)方法,以将执行重定向到自定义侦听器,并传递调用者的参数。
然后,在第一次执行侦听器(您感兴趣的main方法)时,您可以访问这些参数,此外,您还可以禁用该特定指令插入(以避免将来加载包含main方法的类时的开销),也可以禁用侦听器本身(以防此时检测了多个main方法)
发布于 2017-01-11 09:37:19
不要紧,找到了答案:
System.out.println(System.getProperty("sun.java.command"));https://stackoverflow.com/questions/41581172
复制相似问题