私は単純なJavaプログラムに取り組んでいます。別のJavaプログラムをコンパイルして実行するだけです。Runtime.exec()関数を使用してコンパイルして実行しています。コンパイルに問題はありません。しかし、実行時に、2番目のプログラムがキーボードから読み取るために入力を必要とする場合、マスタープロセスからそれを与えることはできません。getOutputStream()関数を使用しました。しかし、それは仕方がありませんでした。コードを提供します。
public class sam {
public static void main(String[] args) throws Exception {
try {
Process p = Runtime.getRuntime().exec("javac sam2.java");
Process p2 = Runtime.getRuntime().exec("java sam2");
BufferedReader in = new BufferedReader(
new InputStreamReader(p2.getInputStream()));
OutputStream out = p.getOutputStream();
String line = null;
line = in.readLine();
System.out.println(line);
input=input+"\n";
out.write(input.getBytes());
p.wait(10000);
out.flush();
}catch (IOException e) {
e.printStackTrace();
}
}
}
これは私のマスタープログラム(sam.java)です。
以下はsam2.javaのコードです
public class sam2 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Enter the number..\n");
str = br.readLine();
System.out.println(Integer.parseInt(str));
}
}
2番目のプログラムに印刷ステートメントしかない場合は問題ありません。しかし、私が他から何かを読まなければならないときに問題が発生します。