java getInputArguments () возвращает неудобные результаты, если значение системного свойства содержит пробелы - PullRequest
3 голосов
/ 03 февраля 2012

Рассмотрим основной метод:

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) и на win (не тестировал в других местах).

Кто-нибудь знает способ получения входных аргументов, который является надежным, когда системные свойства содержат пробелы?

1 Ответ

1 голос
/ 08 февраля 2012

Очевидно, это известная проблема, которая могла быть исправлена ​​в JDK7: http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=f84d44729bd8affffffffeb9b87963e2d752?bug_id=6459832

...