这是我的build.xml的一部分:
<target name="run">
<java jar="${jar.dir}/${Main.class}.jar"
fork="yes"
<assertions>
<enable />
</assertions>
</java>
</target>
或
<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"one_answers"Test2"。如果我使用Ant运行这段代码,我只有"Test1"。
我该如何解决这个问题?
您可能会发现Ant在打印到stdout之前逐行缓冲程序的System.out
的输出,并且由于程序永远不会终止(while (true) {}
), Ant等待程序完成后才刷新该行的输出。尝试更改Test
构造函数以使用println
,您将看到输出。
这应该能解决问题。
System.out.flush();
在进入无限循环之前添加它。(编辑:),然后调用new Test()