您好,我对Java有一些疑问。这是我的代码:public static void main(String[] args) throws Exception { Process pr = Runtime.getRuntime().exec("java -version"); BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } pr.waitFor(); System.out.println("ok!"); in.close(); System.exit(0);}在该代码中,我尝试获取Java版本命令执行是可以的,但是我无法读取输出,只是返回null。为什么?
3 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞
使用getErrorStream()。
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
编辑:
您可以使用ProcessBuilder(也可以阅读文档)
ProcessBuilder ps=new ProcessBuilder("java.exe","-version");
//From the DOC: Initially, this property is false, meaning that the
//standard output and error output of a subprocess are sent to two
//separate streams
ps.redirectErrorStream(true);
Process pr = ps.start();
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
pr.waitFor();
System.out.println("ok!");
in.close();
System.exit(0);
添加回答
举报
0/150
提交
取消