Я бегу 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 = значение пары свойств.
Вы не нашли [документацию] (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html) ?! Совершенно ясно: * «Аргументы после имени файла класса или имени файла JAR передаются методу main()». * –
@ T.J. Да, теперь, когда я знаю, в чем проблема, это было ясно. Это легко, когда вы ищете «аргументы строки java cmd» или что-то в этом роде. Но пытались ли вы найти документацию при поиске конкретной проблемы? Например: «получил значение null для -D-системного свойства»? Нет ссылки, с которой я столкнулся, и в конце мне пришлось разобраться с ней вручную, и это заняло у меня много времени. – kub1x