Display disp = Display.getCurrent();
disp.asyncExec(new Runnable() {
public void run(){
try {
PipedOutputStream pos = new PipedOutputStream();
System.setErr(new PrintStream(pos, true));
System.setOut(new PrintStream(pos, true));
PipedInputStream pis = new PipedInputStream(pos);
BufferedReader reader = new BufferedReader(new InputStreamReader(pis));
String line = null;
while (true){
line = reader.readLine(); // != null)
console.append(line);
System.out.println("moo" + line);
parent.layout(true,true);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
我想捕獲System.err的內容在我的應用程序的調試窗口中打印出來。我可以運行上面的代碼,但System.err中的內容沒有顯示在我的應用程序中,它只是被打印到控制檯,任何想法爲什麼?將stdout重定向到swt。
好的,有道理,但是我做了這個改變後,輸出仍然打印到控制檯。也許它與在單獨的線程中調用setOut有關? – 2012-04-18 11:51:54