如果系统属性值包含空格,则java getInputArguments()返回尴尬的结果

时间:2012-02-03 18:45:59

标签: java jvm jvm-arguments system-properties

考虑一个主要方法:

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] //!!!

至少这是Oracle / Sun的jvm 6在mac上的行为)&amp;在胜利(没有在别处测试)。

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

1 个答案:

答案 0 :(得分:1)