私は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
。の出力をキャプチャしましたが、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のエラーは表示されません。
この問題を修正し、出力ストリームを処理したり、アイデアを共有したりするためのサンプルコードを教えてください。前もって感謝します