2011-09-23 54 views
3

這裏是我的的build.xml的一部分:如何使用Apache Ant運行Java代碼

<target name="run"> 
    <java classname="${Main.class}" classpath="${classes.dir};${lib.dir}" fork="yes"/> 
</target> 

下面是一個例子java代碼

public class Test { 
    public Test() { 
     System.out.print("Test2"); 
    } 
    public static void main(String[] args) { 
     System.out.println("Test1"); 
     new Test(); 
     while(true) {} 
    } 
} 

如果我從命令行運行此代碼,我有「Test1」,然後「Test2」。 如果我使用Ant運行此代碼,我只有「Test1」。

我該如何解決這個問題?

回答

4

您可能會發現Ant在打印到標準輸出之前逐行緩存輸出到您的程序的System.out,並且因爲程序永不終止(while (true) {}),Ant正在等待程序在刷新輸出之前完成該線。嘗試更改Test構造函數以使用println,您將看到輸出。

+0

Yeap,我明白了。但如何修復呢?這只是一個例子,但我需要正確使用「System.out.print」。 – EvgenyM

1

這應該解決問題。

System.out.flush(); 

在進入無限循環之前添加它。 (編輯:)和你呼叫新的測試()

+0

嗯..也許我做錯了什麼,但它沒有幫助.. – EvgenyM