我正在尝试使用javaagent获取主程序agrument。可以说我输入的内容如下:
java -jar -javaagent:[path of agent file] foo.jar arg0 arg1 arg2
javaagent应该打印:
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
参数之前的参数及其自身。
有什么帮助吗?
答案 0 :(得分:1)
我的方法是使用代理本身来检测所有public static main(String[] args)
方法,以将执行重定向到定制侦听器,并传递调用者的参数。
然后,第一次执行侦听器(您感兴趣的主要方法), 您可以访问这些参数,此外还可以禁用 特定的工具(以避免在加载包含主方法的将来的类时产生开销),以及侦听器本身(以防万一,当时已检测到多个主要方法)
答案 1 :(得分:0)
没关系,找到了答案:
System.out.println(System.getProperty("sun.java.command"));