3

考虑一个主要方法:

public static void main(String[] args) throws Exception {
    System.out.println("property='" +  System.getProperty("property") + "'");
    List<String> inputArgs = ManagementFactory.getRuntimeMXBean().getInputArguments();
    System.out.println("jvm input args size: " + inputArgs.size());
    System.out.println("jvm input args: " + inputArgs);
} 

运行程序的结果:

>java -Dproperty=hey!
property='hey!'
jvm input args size: 1
jvm input args: [-Dproperty=hey!]

>java -Dproperty="one two three"
property='one two three'
jvm input args size: 3 //but there's only one input property!
jvm input args: [-Dproperty=one, two, three] //!!!

至少这是在 mac 上的 Oracle/Sun 的 jvm 6 和 win 上的行为(尚未在其他地方测试过)。

当系统属性包含空格时,有谁知道获取输入参数的可靠方法?

4

1 回答 1

1

显然这是一个可能已在 JDK7 中修复的已知问题:http ://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=f84d44729bd8affffffffeb9b87963e2d752?bug_id=6459832

于 2012-02-08T00:46:01.760 回答