Javaを使用してGUIを作成しています。この GUI は、ProcessBuilder クラスを使用してコマンド ラインからプログラムを起動します。
起動中のプロセスに関する小さな情報: コマンドラインから、別のウィンドウを作成し、そのウィンドウに情報を出力します。
私のGUIウィンドウには、出力をリダイレクトしたい場所へのテキスト領域があります。私は当初、SwingWorker オブジェクトを使用して、より多くの出力を常にチェックし、GUI を保持しないようにするつもりでした。テストして元の構文がダウンしていることを確認するために (GUI を使用することさえせずに)、2 次プロセスのウィンドウからの出力を System.out に出力すると考えました。ただし、セカンダリ プロセスのウィンドウには出力が表示されますが、作業している端末には表示されないため、何かがおかしいようです。
コードの抜粋は次のとおりです。
Process p = pb.start();
Scanner s = new Scanner(p.getInputStream());
SwingWorker pipe = new SwingWorker<String, Void> (){
public String doInBackground(){
while(run){
if(s.hasNextLine()){
System.out.println("S has next!");
System.out.println(s.nextLine());
}
}
return null;
}
};
pipe.execute();
ブール値の run はプログラムの別の場所で定義され、プロセス p が終了するか強制終了されると false に設定されます (追加の質問: それは本当に悪い考えですか? 私はそうかもしれないと感じています...)。
他のウィンドウに出力されているのを見たときに出力が得られない理由について、誰かが考えを持っていますか? 当初、私の反応は p.getOutputStream() を使用することでしたが、スキャナーはパラメーターとして outputStream を取りません。
お時間をいただきありがとうございます。