2015-09-18 8 views
0

Я бегу jarball помощьюПочему System.getProperties() возвращает null для свойства -D?

java -classpath myBatch.jar some.package.MyMainClass \ 
    -bloodyArgument "I got the argument!" -Dbloody.prop="I got the prop!" 

Тогда в моей основной у меня есть:

Properties argsProps = BatchUtils.argsToProperties(args); 
System.out.println(argsProps.getProperty("bloodyArgument")); 
System.out.println(System.getProperty("bloody.prop")); 

И я получаю выход:

I got the argument! 
null 

Я могу видеть командную строку bloodyArgument (Я добавил его, чтобы узнать, передается ли «что-то» в программу), но я бы ожидал аргумент -D, чтобы установить свойство системы. Почему «bloody.prop» null?

PS: BatchUtils.argsToProperties() делает то, что вы ожидали, что это сделать: разобрать -argName "значение" из командной строки в argName = значение пары свойств.

ответ

2

Всех после класса аргумента команды Java получает передаются вашим главным в Струнной арг [] и не делает его к JVM.

Решение было переставить свойства, как это:

java -classpath myBatch.jar -Dbloody.prop="I got the prop!" \ 
    some.package.MyMainClass -bloodyArgument "I got the argument!" 

я не нашел это в любом месте явно указано, когда вразвалочку полотна с http://duckduckgo.com или прибегая к помощи этого queation из «нуль-D определяется имущество ". Я понял это намного позже, когда печатаю все свойства системы и весь массив аргументов, поэтому отправляю сообщения другим.

+1

Вы не нашли [документацию] (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html) ?! Совершенно ясно: * «Аргументы после имени файла класса или имени файла JAR передаются методу main()». * –

+0

@ T.J. Да, теперь, когда я знаю, в чем проблема, это было ясно. Это легко, когда вы ищете «аргументы строки java cmd» или что-то в этом роде. Но пытались ли вы найти документацию при поиске конкретной проблемы? Например: «получил значение null для -D-системного свойства»? Нет ссылки, с которой я столкнулся, и в конце мне пришлось разобраться с ней вручную, и это заняло у меня много времени. – kub1x

 Смежные вопросы

  • Нет связанных вопросов^_^