Выполнение команд Linux изнутри Java-программы - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь создать графический интерфейс с использованием Java Swing.Оттуда я должен запустить системные команды Linux.Я пытался использовать exec ().Но функция exec () не может проанализировать строку, если она содержит одинарные кавычки.Код, который я использовал, выглядит следующим образом:

Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt '( it_department or ( marketing and manager ) )'")
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

Но я получаю ошибку, когда запускаю программу как - синтаксическая ошибка на "'(".

Та же команда запускается, когдаЯ пишу

Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt default")

Пожалуйста, помогите.Заранее спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Вместо этого разделите параметры на массив, по одной строке для каждого аргумента, и используйте вместо этого exec-метод, который принимает значение String[], что обычно лучше работает для аргументов. Somethign в соответствии с:

Runtime.getRuntime().exec(new String[] {"cpabe-enc", "pub_key", "message.txt", "( it_department or ( marketing and manager ) )"});

или каковы ваши точные параметры.

0 голосов
/ 29 марта 2012

Недавно я решил эту проблему.Я использовал javaFX для вызова сценариев оболочки по нажатию кнопки ... что очень похоже на сценарий вашего приложения Swing ...

Вот ссылки, надеюсь, это может помочь вам ...

Как написать код на Java для запуска сценария оболочки Unix, который использует rSync для внутреннего использования в среде Windows с использованием Cygwin?

Получение ошибки при вызове сценария оболочки в среде Windows с использованием кода Java и Cygwin...!

Удачного кодирования ...:)

0 голосов
/ 29 марта 2012

Это потому, что среда выполнения не интерпретирует '(...)' как один параметр, как вы предполагаете.

Попробуйте вместо этого использовать ProcessBuilder: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...