Использование кавычек и двойных кавычек в Java Runtime.getRuntime (). Exec (...) - PullRequest
5 голосов
/ 07 декабря 2011

Я пытаюсь запустить изображение Lisp из Java в Mac OSX.Используя изображение из консоли, я набираю следующее:

lisp_image --eval '(package::method "some_argument")'

все работает нормально.

В Java у меня проблема с передачей кавычек и двойных кавычек с использованием Runtime.getRuntime().exec("lisp_image --eval '(package::method \"some_argument\")'").

Я также пытался использовать:

Runtime.getRuntime().exec(new String[] {"lisp_image", "--eval ", "\'(package::method ", 
           "--eval ", "\"", "some_argument", "\")", "\'"});

и различные вещи с экранированием с помощью обратной косой черты.Ничего не работает .... Использование String Array, кажется, работает только для команд Unix (или Windows).

Есть идеи?

Заранее спасибо, Свен

1 Ответ

12 голосов
/ 07 декабря 2011

Насколько я понимаю, вы хотите вызвать list_image с двумя аргументами, --eval и '(package :: method \ "some_argument \")', где одинарные кавычки только для того, чтобы оболочка не разбила его на несколько аргументов.

Тогда вы должны использовать

Runtime.getRuntime().exec(new String[] {"lisp_image", "--eval", "(package::method \"some_argument\")"});
...