Runtime.getRuntime (). Exec () с командой gpg не работает - PullRequest
0 голосов
/ 08 июля 2011

У меня есть команда gpg, которая шифрует файл

 gpg --batch --yes -o abc.csv.gpg -r 'balu shanmukh' -e A2.java

в приведенной выше команде

--batch
--yes
-o 
-r and -e are options

и balu shanmukh - это значение.

команда подготовлена ​​динамически, а команда подготовлена ​​выше. эта команда выполняется в командной строке, но когда эта команда запускается с

 Runtime.getRuntime().exec(command);

получаю сообщение об ошибке как использование: gpg [опции] [имя файла]

У них нет проблем с gpg classs path или чем-то еще, потому что, если я удаляю одинарную кавычку для значения, в котором между пробелами нет пробела, выполняется правильное выполнение из Java.

только проблема, когда у нас есть пространство в значении. тогда обязательно использовать цитату для значения, и если я использую его. запятая не выполняется должным образом

Я не понял поведение? Может ли кто-нибудь помочь мне понять это поведение

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Не используйте Runtime().exec() и не создавайте команду как одну строку .Вместо этого создайте ProcessBuilder для вашего Process и передайте каждый переключатель в вашу команду в качестве аргумента.

Вот простой пример:

Process process = new ProcessBuilder("gpg", "--foo", "-r", "some_file_name").start();
int exitStatus  = process.waitFor();

PS: Как уже отмечали другие, вернитесь к своим вопросам и проверьте ответы, которые, по вашему мнению, отвечают на ваш вопрос.Люди стараются ответить.Если вы думаете, что они помогли, проголосуйте за них или проверьте их ответ как ответивший на ваш вопрос.
Удачи и добро пожаловать;)

0 голосов
/ 17 ноября 2011

Вот простой пример:

Process process = новый ProcessBuilder ("gpg", "--foo", "-r", "some_file_name").Начните();int exitStatus = process.waitFor ();

Извините, но это не объясняет, как вы передаете одну строку в кавычках в качестве аргумента.то есть.передать «Баку» в качестве аргумента."Баку" не работает ....

...