2016-09-28 82 views
0

雖然看着日食別人的Maven的Java項目中,我注意到,保存的運行配置中的一種具有以下maven的命令來運行:System.out如何將輸出直接輸出到eclipse中的控制檯?

test -Dtest=fooTest -Dcom.awesomesite=System.out 

當我檢查fooTest.java文件,我發現下面的語句:

public final static String BAR = "com.awesomesite"; 
.... 
this.whereToWrite = System.getProperty(BAR); 

顯然,實例變量「whereToWrite」表示輸出數據應該到達的位置。由於我是Java的初學者,我只想了解System.out直接輸出如何在控制檯上打印。

+0

在eclipse內部的某個地方,它必須將'System.out'設置爲指向控制檯視圖。 System.out是一個可修改的靜態字段 –

+0

@LanceJava它實際上是「final」。在jvm開始後它會被反射設置,據我記憶 – SomeJavaGuy

+0

反射不是必需的(我不認爲你可以通過反射來設置最終場),還有一個[setOut(...)](https ://docs.oracle.com/javase/7/docs/api/java/lang/System.html#setOut%28java.io.PrintStream%29)方法。猜測最後一個字段是一個包裝,代理是可變的 –

回答

0

當啓動運行配置時,Eclipse啓動一個新進程以使用Runtime.getRuntime().exec(...)運行它。這將返回一個代表新過程的對象Process

Process具有getInputStream()方法,它返回連接到過程的標準輸出的InputStream(這是通常System.out寫入)。 Eclipse從這個輸入流中讀取並輸出它在控制檯上接收的內容。

Eclipse還使用getErrorStream()從進程錯誤流中讀取數據。

+0

謝謝你的回答,描述了我之前不知道的引擎蓋執行情況。我正在閱讀eclipse配置和Runtime.getRunttime()。exec(...)。 – DaeYoung

0

System.out連接到環境/用戶指定的顯示。默認情況是控制檯。