2013-10-13 88 views
1

我試圖運行 「的Java的版本」 運行使用的ProcessBuilder:的ProcessBuilder不帶參數

processBuilder = new ProcessBuilder("java -version"); 
process = processBuilder.start(); 

不過,我得到一個錯誤:

java.io.IOException: Cannot run program "java -version": CreateProcess error=2, The system cannot find the file specified 

當我刪除了「-version 「和做:

processBuilder = new ProcessBuilder("java"); 
process = processBuilder.start(); 

它運行良好,我得到正常的幫助指南輸出。

我怎樣才能讓它運行的論點呢?

+0

對不起!我曾嘗試搜索類似的問題,但我沒有嘗試搜索「參數」。 – user2513924

回答

9

完整的參數被解釋爲可執行文件。使用

ProcessBuilder processBuilder = new ProcessBuilder("java", "-version"); 
+0

謝謝!我真的應該只是檢查了文檔:S – user2513924

+0

@ user2513924是的,你[應該已經完成​​](http://meta.stackexchange.com/questions/182266/how-much-research-effort-is-expected-of -stack溢出用戶)。 –

0

Constructor Summary

ProcessBuilder(List command) - Constructs a process builder with the specified operating system program and arguments.

ProcessBuilder(String... command) - Constructs a process builder with the specified operating system program and arguments.

所以你需要使用:

ProcessBuilder processBuilder = new ProcessBuilder("java", "-version"); 
-2

你可能會做這種不必要的複雜。如果您只想找出正在運行的Java版本,請使用System.getProperty("java.specification.version")

此外,如果Java不在PATH上,您的代碼將失敗,但這種方式仍然有效。