我試圖用JavaJava運行EXEC
Runtime.getRuntime().exec(command);
令人驚訝的是與路徑,目錄和文件相關的一切使用系統EXEC做一些事情都不盡如人意
我不知道爲什麼和只是想知道是否有任何替代?
我試圖用JavaJava運行EXEC
Runtime.getRuntime().exec(command);
令人驚訝的是與路徑,目錄和文件相關的一切使用系統EXEC做一些事情都不盡如人意
我不知道爲什麼和只是想知道是否有任何替代?
另一種方法是使用ProcessBuilder類,它有一個更簡潔的界面,但是你的主要問題可能與操作系統如何處理命令行有關,並且沒有太多的Java可以幫助你做到這一點。
如上所述,cd是shell內建的。即它不是可執行文件。您可以確定這一點使用:
$ which cd
cd: shell built-in command
,因爲它不是一個獨立的可執行文件,Runtime.exec()
將無法用它做任何事情。
編寫shell腳本來完成特定於shell的內容(例如更改工作目錄),然後使用Runtime.exec()
執行該shell腳本可能會更好。您可以在腳本中設置PATH變量等,並讓Java簡單地執行腳本。
捕捉人的一件事就是你必須使用你的腳本的stdout/stderr(即使你把它扔掉)。如果你不這樣做,你的過程可能會阻止。有關更多詳細信息,請參閱this SO answer。
很好,謝謝。我會試着弄明白。 shell腳本不是一個好主意我需要流 –
你能否詳細說一下。你的流評論? –
exec()方法可以帶三個參數。第三個是你的子進程應該用作其工作目錄的目錄。無論如何,這解決了你的「cd」問題。
告訴我們你正在嘗試做什麼。那麼只有我們可以給予適當的幫助 –
*「'Runtime.getRuntime().exec(command);'令人驚訝的是......」*不對我。參見[Runtime.exec()不會](http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html)。此外,爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –
例如cd(更改目錄) –