2011-12-11 37 views

回答

2

java的exec命令不使用系統命令解釋器。類似於「cd mydir; myprog」的內容取決於系統命令行解釋器(例如,在windows cmd上,在linux sh上)將其拆分爲2個單獨的命令並執行它們中的每一個。 java不會調用系統命令解釋器,因此不起作用。您需要分別調用每個命令,或者自己調用所需的解釋器作爲命令行的一部分。

+0

好的,但我想知道爲什麼它以這種方式實現?爲什麼不使用像PHP這樣的命令解釋器呢?這對我來說看起來是一個不必要的限制。 – Ree

+0

取決於命令行解釋程序的幫助可能會與java的平臺不可知的企圖衝突。顯然,當你調用exec時,你可能已經超出了這個領域......一般來說,java一直不願意允許對原始操作系統進行「原始」訪問,並且一般在「最基本」級別提供。在這種情況下,「最基本」級別允許您執行直接命令。 – jtahlborn

-1

假設您正在運行applet,而不是服務器上CLI環境中的Java?如果是這樣,那麼您的Java運行時正在客戶端計算機上運行,​​而不是服務器上運行。

Java還有更好的方式來處理多個命令而不是你的分號。除了使用簽名:

Runtime.exec(String) 

嘗試使用此爲您的每個命令:

Runtime.exec(String[]) 

,使你的命令的每個參數的字符串數組中的元素。

0

我見過有人有這樣的問題,我敢肯定有幾種方法,但是我見過的大多數人回覆是這樣的。在它之前添加cmd。

Runtime.getRuntime().exec("cmd cd mydir; myprog"); 
相關問題