Как запустить Java-код с Apache Ant - PullRequest
3 голосов
/ 23 сентября 2011

Вот часть моего 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», а затем «Test2».Если я запускаю этот код с помощью Ant, у меня есть только «Test1».

Как я могу решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 23 сентября 2011

Вы, вероятно, обнаружите, что Ant буферизует вывод в System.out вашей программы построчно перед печатью в stdout, и, поскольку ваша программа никогда не завершает работу (while (true) {}), Ant ожидает завершения программы перед сбросомвывод линии.Попробуйте изменить конструктор Test на println, и вы увидите вывод.

1 голос
/ 23 сентября 2011

Это должно решить проблему.

System.out.flush(); 

Добавьте его, прежде чем попасть в бесконечный цикл. (РЕДАКТИРОВАТЬ :) и после вызова нового теста ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...