在Java Runtime.getRuntime()。exec(…)中使用引号和双引号

我正试图在Mac OSX上从Java启动一个Lisp图像。 从我的控制台使用图像我键入以下内容:

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

一切运行良好。

在Java中,我有问题使用Runtime.getRuntime().exec("lisp_image --eval '(package::method \"some_argument\")'").来传递引号和双引号Runtime.getRuntime().exec("lisp_image --eval '(package::method \"some_argument\")'").

我也试着用:

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

以及用反斜杠转义的各种东西。 没有什么作品….使用string数组似乎只适用于Unix(或Windows)命令。

有任何想法吗?

在此先感谢,斯文

据我所知,你要调用list_image两个参数,–eval和'(package :: method \“some_argument \”)'单引号就在那里,以防止shell分解成多个参数。

那么你应该使用

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