【发布时间】:2012-08-03 11:48:28
【问题描述】:
我正在使用 Runtime.getRuntime().exec 从另一个 Java 应用程序运行一个 Java 程序,就像这样
Process p1 = Runtime.getRuntime().exec("javac test.java");
Process p2 = Runtime.getRuntime().exec("java test");
test.java的内容
import java.io.*;
class test
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(s);
}
}
我想处理进程p2的Input、Output和Error流。
我确实捕获了test.java 的输出,但是,我不知道如何处理输出和错误。
这是我的代码:
try {
String s = "";
InputStream istr = p2.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(istr));
BufferedReader bre = new BufferedReader
(new InputStreamReader(p2.getErrorStream()));
while ((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
while ((s = bre.readLine()) != null) {
System.out.println(s);
}
bre.close();
p2.waitFor();
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception err) {
err.printStackTrace();
}
上面的代码可以很好地捕获test.java 的输出。但它不显示 test.java 的错误。
您能否给我一个示例代码来解决此问题并处理输出流或分享想法?在此先感谢
【问题讨论】:
-
还可以考虑使用
ProcessBuilder,它提供了一种合并out和err流的方法,因此它们更易于使用。
标签: java process runtime.exec