ProcessBuilder不会使用参数运行

时间:2013-10-13 13:57:11

标签: java arguments processbuilder

我正在尝试使用ProcessBuilder运行“java -version”:

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();

它运行正常,我得到正常的帮助指南输出。

我怎样才能让它运行参数呢?

3 个答案:

答案 0 :(得分:10)

完整的参数被解释为可执行文件。使用

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

答案 1 :(得分:0)

  

构造方法摘要

     

ProcessBuilder(List command) - 使用指定的操作系统程序和参数构造流程构建器。

     

ProcessBuilder(String ... command) - 使用指定的操作系统程序和参数构造一个进程构建器。

所以你需要使用:

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

答案 2 :(得分:-2)

你可能会让这个变得不必要地复杂化。如果您只想查找正在运行的Java版本,请使用System.getProperty("java.specification.version")

此外,如果Java不在PATH上,您的代码将失败,但这种方式仍然有效。