2013-07-05 6 views
20

Gibt es einen klar erklärten und einfachen Weg, die Compiler-Ausgabe zu sehen, wenn javac über eine Ant Aufgabe ausgeführt wird?Wie wird die Compiler-Ausgabe angezeigt, wenn javac über eine Ant-Task ausgeführt wird?

Hier ist mein javac Ant tag:

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

Hier ist die einzige Fehlermeldung erhalte ich:

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

Das Problem ist, dass ich weiß nicht, wie der Compiler-Fehler zu sehen Ausgabe für Details ...


Wenige con Figuration Elemente, die helfen können:

  • Ant 1.6.5
  • Windows 7 x64
  • Java 1.6.0_20 x32
  • Starten Ziele über Eclipse-

Ich weiß, es gibt einige verwandte Fragen zu SO beantwortet, aber keine von ihnen beantwortet wirklich diese einfachen Fragen:

+0

Bevor Sie die Fehlermeldung erhalten, sehen Sie nicht '[javac] ...'? –

+0

@ sp00m sehen Sie die Fehlerdetails, wenn ant über die Befehlszeile ausgeführt wird. Ich vermute, dass das Problem mit der Sonnenfinsternis als mit der Ameise zusammenhängt. – Jayan

+0

Wenn Sie kein '[javac]' sehen, könnte es ein 'java.lang.OutOfMemoryError: Java-Heap-Space 'sein, siehe hier in [Stackoverflow] (http://stackoverflow.com/questions/5579073/javac-java- lang-outofmemoryerror-when-running-ant-from-eclipse /) – hokr

Antwort

8

Ich glaube, Sie suchen das verbose="true" Attribut hinzufügen sollten.

Sie bereits in den Kommentaren erwähnt, dass dies die Ursache für Ihren Fehler nicht gedruckt wird. Nun, ich denke, in deiner Situation passiert etwas anderes. Ich habe ein Beispielprojekt und so wurde die Ursache meines Fehlers gedruckt. Hier ist die Ausgabe mit 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 

Etwas seltsam und speziell auf Ihren Code, um die schlechte Fehlermeldung verursacht. Können Sie ein Beispielprojekt erstellen, das den Fehler reproduziert?


Wie Sie erwähnt haben, debug="true" ist nicht das Attribut Sie suchen.

Indicates whether source should be compiled with debug information; defaults to off. If set to off, -g:none will be passed on the command line for compilers that support it (for other compilers, no command line argument will be used). If set to true, the value of the debuglevel attribute determines the command line argument.

Sie wissen, wenn Sie Stack-Trace bekommen und es Zeilennummern enthält? Das macht debug="true". Wenn es ausgeschaltet ist, erhalten Sie keine Zeilennummern.

+1

Wo fügen Sie das 'verbose =" true "' hinzu? Ich habe das gleiche Problem, generierte build.xml mit Eclipse und sagt nur 'somepath/build.xml: 34: Kompilieren fehlgeschlagen; Weitere Informationen finden Sie in der Compiler-Fehlerausgabe. Ich habe es dem einzigen Tag als Attribut hinzugefügt. Kann immer noch keine Compilerfehlerausgabe anzeigen ... –

0

Sie das Attribut debug

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

Es ändert nichts (ich hatte es schon eingeschaltet) ... Wo sollte dann die Ausgabe des Compilers sein? – sp00m

+0

oder sogar 'verbose' –

+0

@SotiriosDelimanolis Verwendung von' verbose', Ant-Ausgabe ist * länger *, aber es wirkt sich immer noch nicht auf den Ausgang des Compilers AFAIK ... – sp00m

0

verwendet

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

Das Problem tritt auch auf, wenn der Java-Compiler selbst nicht gestartet werden kann. Zum Beispiel, wenn der definierte Heap zu groß ist. Die java2 Aufgabe Intellij würde die Informationen angezeigt werden

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. 

und die Ursache in der build.xml-Datei, in meinem Fall:

<property name="compiler.args" value="-J-Xmx1600m"/> 
0

Ich habe die gleiche Fehlermeldung ohne weitere Informationen zu bekommen. Das Problem endete damit, dass eine meiner .jar-Dateien beschädigt war. Das Ersetzen dieser .jar-Datei löste das Problem.