3 Stimmen

Wie man Java-Code mit Apache Ant ausführt

Hier ist ein Teil meiner build.xml :

<target name="run">
    <java jar="${jar.dir}/${Main.class}.jar" 
        fork="yes"
        <assertions>
            <enable />
        </assertions>
    </java>
</target>

o

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

Hier ein Beispiel Java-Code :

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

Wenn ich diesen Code über die Befehlszeile ausführe, habe ich "Test1" und dann "Test2". Wenn ich diesen Code mit Ant ausführe, habe ich nur "Test1".

Wie kann ich dieses Problem lösen?

4voto

beny23 Punkte 33277

Sie werden wahrscheinlich feststellen, dass Ant die Ausgabe nach System.out Ihres Programms zeilenweise, bevor Sie es auf stdout ausgeben, und weil Ihr Programm nie abbricht (die while (true) {} ), wartet Ant, bis das Programm beendet ist, bevor die Ausgabe der Zeile gelöscht wird. Versuchen Sie, die Test Konstruktor zu verwenden println und Sie werden die Ausgabe sehen.

1voto

RHT Punkte 4858

Damit sollte das Problem gelöst sein.

System.out.flush(); 

Fügen Sie es hinzu, bevor Sie in eine Endlosschleife geraten. (EDIT:) und nachdem Sie new Test() aufgerufen haben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X