通过java中的反射获取cli参数

时间:2011-07-21 23:32:17

标签: java reflection

除了作为main的参数之外,有没有办法访问args数组中的参数?我正在修补java中的Disgruntled Bomb,我希望能够获得cli参数,并以随机顺序或类似的方式调用main函数。

public class Bomb{

  static {
    main(new String[]{"arg"});
    System.exit(0);
  }

  public static void main(String[] args){
    for(int i = 0; i < args.length; i++){
      System.out.printf("arg %d: %s%n",i,args[i]);
    }
  }
}

3 个答案:

答案 0 :(得分:4)

在Sun的JDK上,您可以访问sun.java.command属性:

String args = System.getProperty("sun.java.command");

但是,您必须自己拆分参数,并且它对其他JVM也不是很容易移植。

答案 1 :(得分:1)

我不知道你是否在寻找它,但Apache CLI(命令行界面)允许你以“旧的”Unix方式传递参数

-nameOfArgument1 valueOfArgument1 -nameOfArgument2 valueOfArgument2....

答案 2 :(得分:0)

只需在另一个类中实现一个main方法,然后用它来调用你需要的随机化的原始main?或者呼叫需要完全相同吗?在那种情况下,你将如何停止对自己的主调用?