Java で main メソッドを使用して別のクラスを (コンパイルして) 実行し、その出力を読み取り、後でその入力に書き込む必要がありますが、最初に読み取ることに集中します。アプリケーションが標準出力に「123」を書き込むかどうかをテストする必要があるとしましょう。これを想像する方法は次のとおりです。
public class TestMe {
public static void main(String[] args) {
System.out.println("123");
}
}
...
public class Tester {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
try {
Process exec = runtime.exec("java works.TestMe");
BufferedReader br = new BufferedReader(new InputStreamReader(exec.getInputStream()));
if (br.readLine().equals("123")) {
System.out.println("Your program is working fine");
} else {
System.out.println("Yout program is bad and you should feel bad");
}
} catch (IOException ex) {
}
}
}
ランタイム クラスで作成されたプロセス ith exec() メソッドをロードしましたが、リーダーはデータを読み取らず、代わりに (メソッド readLine() で) null ポインター例外をスローします。私は両方のクラスを異なるパッケージに持っており、とにかく問題がある場合は、netbeans を使用しています。任意の助けが必要です。