2011-12-07 59 views
4

我想在Mac OSX中從Java啓動一個Lisp圖像。使用我的控制檯中的圖像我輸入以下內容:在Java Runtime.getRuntime()中使用引號和雙引號exec(...)

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)命令。

任何想法?

由於提前, 斯文

+0

難道你看:http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1? –

回答

10

據我瞭解,你想用兩個參數,--eval和調用list_image「(包::方法\‘some_argument \’)」,其中單引號是隻是爲了防止shell將其分解爲多個參數。

那麼你應該使用

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

太棒了!這是單引號:-)非常感謝你! – svendeswan

+1

@svendeswan:不要忘記接受答案。 – Daimrod

+0

@svendeswan,你可能想要接受答案,如果它爲你工作:-) – aishwarya