2

我正在尝试使用 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();

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

我怎样才能让它也运行论点?

4

3 回答 3

11

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

ProcessBuilder processBuilder = new ProcessBuilder("java", "-version");
于 2013-10-13T13:58:19.537 回答
0

构造函数摘要

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

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

所以你需要使用:

ProcessBuilder processBuilder = new ProcessBuilder("java", "-version");
于 2013-10-13T14:09:44.480 回答
-2

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

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

于 2013-10-13T14:59:06.217 回答