【问题标题】:java getInputArguments() returns awkward results if system property value contains spaces如果系统属性值包含空格,java getInputArguments() 将返回尴尬的结果
【发布时间】:2012-02-03 18:45:59
【问题描述】:

考虑一个主要方法:

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 on mac) 和 win 上的行为(尚未在其他地方测试过)。

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

【问题讨论】:

  • 也打印出 args.length - getInputArguments() 正在拆分引用的参数(即,这不是 JVM 的错!)
  • 不管是谁的错——行为显然是错误的。我建议向 Oracle 提交错误。
  • 如果你想要的是系统属性,那么访问System.getProperties()-Dxxx=yyy 定义系统属性。命令行属性的解析取决于你的 shell 以及 JVM。

标签: java jvm jvm-arguments system-properties


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2016-04-11
    • 2013-03-23
    • 2013-08-23
    • 2016-09-22
    相关资源
    最近更新 更多