我正在使用以下代码来打印java.exe的版本。 (此java.exe不是当前运行的java.exe)。我不知道为什么,它不起作用。
{{1}}
答案 0 :(得分:4)
试试这个
List<String> commands = new ArrayList<String>();
commands.add("C:\\Program Files\\Java7\\jdk1.7.0_79\\bin\\java.exe");
commands.add("-version");
ProcessBuilder pb = new ProcessBuilder(commands);
// pb.directory(new File("C:\\Program Files\\Java7\\jdk1.7.0_79\\bin"));
Process p = pb.start();
int errCode = p.waitFor();
System.out.println(errCode);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
java -version的输出被发送到错误流 - 从中读取 该流应该导致正确的输出
输出:
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)