2012-04-18 3 views
0

System.errの内容をキャプチャして、アプリケーションのデバッグウィンドウに表示しようとしています。私は上記のコードを実行することができますが、System.errのコンテンツはアプリケーションに表示されていません。コンソールに印刷されているだけです。stdoutをswtにリダイレクトします。

答えて

0

私はswtプログラミングに精通していません。しかし、stdoutをリダイレクトする方法は、System.setErrを呼び出すのと同じように、PrintStreamを実装したカスタマイズされたオブジェクトに出力ストリームを設定することです。このオブジェクトのprintメソッドは、GUIを更新する方法を知っています

0

問題はあなたが無限にSystem.outにエコーしているということです。あなたはおそらく、古いSystem.outrun()の先頭に格納しておき、読み込みループの新しいSystem.outではなくそこにエコーします。

PrintStream oldOut = System.out; 

// ... set out and err 

while(true) { 
    ... 
    oldOut.println("moo" + line); 
} 

編集:

また、あなたは、EDT上で実行されますので、あなたのGUIがハングアップしますむしろasyncExec()を呼び出すより新しいスレッドを開始します。

+0

私はこの変更を行った後でも出力はコンソールに出力されます。たぶんそれはsetOutと別のスレッドで呼ばれることと関係がありますか? –

関連する問題