web-dev-qa-db-fra.com

Comment voir la sortie du compilateur lors de l'exécution de javac via une tâche Ant?

Existe-t-il un moyen simple et clairement expliqué de visualiser la sortie du compilateur lors de l'exécution de javac via une tâche Ant ?

Voici ma balise javac Ant:

<javac srcdir="${myproject.src}" destdir="${myproject.class}">
    <!-- ... -->
</javac>

Voici le seul message d'erreur que je reçois:

/path/to/build.xml:42: Compile failed; see the compiler error output for details.

Le problème est que je ne sais pas comment voir la sortie d'erreur du compilateur pour plus de détails ...


Quelques éléments de configuration pouvant aider:

  • Fourmi 1.6.5
  • Windows 7 x64
  • Java 1.6.0_20 x32
  • Lancer des cibles via Eclipse

Je sais qu'il y a des questions à réponses connexes sur SO, mais aucune d'entre elles ne répond vraiment à ces questions simples:

20
sp00m

Je pense que vous recherchez l'attribut verbose="true"

Demande au compilateur une sortie prolixe; par défaut à non. 

Vous avez déjà mentionné dans les commentaires que cela n'imprimait pas la cause de votre erreur. Eh bien, je pense que quelque chose d'autre se passe dans votre situation. J'ai un exemple de projet et la cause de mon erreur a été imprimée d'une manière ou d'une autre. Voici la sortie avec verbose="false":

[mkdir] Created dir: C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\mavensandbox.xml:284: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 3 source files to C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\src\main\Java\com\sandbox\Sandbox.Java:8: error: cannot find symbol
[javac]         System.out.prinln("Hello, I\'m the best!");
[javac]                   ^
[javac]   symbol:   method prinln(String)
[javac]   location: variable out of type PrintStream
[javac] 1 error

Quelque chose d'étrange et spécifique à votre code est à l'origine du mauvais message d'erreur. Pouvez-vous créer un exemple de projet qui reproduit l'erreur?


Comme vous l'avez mentionné, debug="true" n'est pas l'attribut que vous recherchez. 

Indique si la source doit être compilée avec les informations de débogage. par défaut à off. Si désactivé, -g: aucun ne sera passé sur la ligne de commande pour les compilateurs qui le supportent (pour les autres compilateurs, aucun argument de ligne de commande ne sera utilisé). Si défini sur true, la valeur de l'attribut debuglevel détermine l'argument de ligne de commande.

Vous savez quand vous obtenez une trace de pile et qu'il y a des numéros de ligne? C'est ce que debug="true" fait. Si c'est le cas, vous n'obtenez pas les numéros de ligne. 

8
Daniel Kaplan

Le problème se produit également lorsque le compilateur Java lui-même ne peut pas démarrer. Par exemple, lorsque le tas défini est trop grand. La tâche Java2 d’Intellij afficherait les informations 

Using external javac compiler
Compilation arguments:
...
'-J-Xmx1600m'
...
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

et la cause dans le fichier build.xml, dans mon cas:

<property name="compiler.args" value="-J-Xmx1600m"/>
1
Olivier Faucheux

Je recevais le même message d'erreur sans plus d'informations. Le problème a fini par être l'un de mes fichiers .jar était corrompu. Remplacer ce fichier .jar a résolu le problème.

0
mekane84

Vous devriez ajouter l'attribut debug

<javac srcdir="${myproject.src}" destdir="${myproject.class}" debug="true>
    <!-- ... -->
</javac>
0
VirtualTroll

Utilisez ceci

<javac srcdir="src" destdir="build/classes" debug="true">
            <classpath>
                <path refid="classpath"/>
            </classpath>
</javac>
0
S Kr