Кавычки в аргументах командной строки передаются в Java main () - PullRequest
4 голосов
/ 18 октября 2010

Я запускаю программу на Java со следующей командной строкой (Изменить: в свойствах проекта NetBeans 6.8)

toto has:"tutu titi"

args - это массив из 2 строк

toto
has:tutu titi

Я хочу (действительно два аргумента, второй) args[1] должно быть

has:"tutu titi"

Как мне это сделать?

Редактировать: я уже пытался экранировать кавычки с обратной косой чертой из строки "Аргументы" вСвойства объекта NetBeans, но я получаю аргументы [1]

has:\tutu titi\

Ответы [ 5 ]

6 голосов
/ 18 октября 2010

Это действительно зависит от вашей оболочки.Вы не сказали, какую операционную систему вы используете.Например, в Windows это будет работать:

java Test toto "has:\"tutu titi\""

Я считаю, что то же самое будет работать и в bash.

Но если вы спрашиваете, что вы можете сделать вJava , чтобы решить это: ничего.Оболочка проанализирует командную строку до того, как будет вызван процесс, и вы не сможете отменить этот анализ.

3 голосов
/ 24 октября 2011

У меня была похожая проблема в NetBeans, и я нашел решение:

Измените / добавьте свойство "application.args" в свои private.properties к этому:

application.args='has:""tutu titi""'

Одинарные кавычкиотметить ваш «аргумент» и две двойные кавычки, чтобы определить одну «двойные кавычки».

1 голос
/ 31 мая 2012

Если при добавлении из диалогового поля Конфигурация / Аргументы NetBeans (7.1.2) у меня сработала внешняя и двойная внутренняя одинарные кавычки, например ::100100

my argument
1 голос
/ 12 января 2012
1 голос
/ 18 октября 2010

Использование

toto "has:\"tutu titi\""
...