ant javac
¿Cómo ver el resultado del compilador al ejecutar javac a través de una tarea Ant? (5)
Creo que estás buscando el atributo verbose="true"
.
Pide al compilador una salida detallada; por defecto es no.
Usted ya mencionó en los comentarios que esto no imprime la causa de su error. Bueno, creo que algo más está sucediendo en tu situación. Tengo un proyecto de muestra y de cualquier forma se imprimió la causa de mi error. Aquí está el resultado con 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
Algo extraño y específico para su código está causando el mensaje de error. ¿Puedes crear un proyecto de muestra que reproduzca el error?
Como mencionaste, debug="true"
no es el atributo que estás buscando.
Indica si la fuente debe compilarse con información de depuración; se desactiva por defecto Si se desactiva, -g: none se pasará en la línea de comando para los compiladores que lo soporten (para otros compiladores, no se usará ningún argumento de línea de comando). Si se establece en true, el valor del atributo debuglevel determina el argumento de línea de comando.
¿Sabes cuándo tienes rastro de pila y tiene números de línea? Eso es lo que hace debug="true"
. Si está apagado, no obtienes los números de línea.
¿Hay alguna manera clara y simple de ver el resultado del compilador al ejecutar javac
través de una tarea Ant ?
Aquí está mi etiqueta javac
Ant:
<javac srcdir="${myproject.src}" destdir="${myproject.class}">
<!-- ... -->
</javac>
Este es el único mensaje de error que recibo:
/path/to/build.xml:42: Compile failed; see the compiler error output for details.
El problema es que no sé cómo ver la salida de error del compilador para detalles ...
Pocos elementos de configuración que pueden ayudar:
- Ant 1.6.5
- Windows 7 x64
- Java 1.6.0_20 x32
- Lanzamiento de objetivos a través de Eclipse
Sé que hay algunas preguntas respondidas relacionadas en SO, pero ninguna de ellas responde realmente a estas simples preguntas:
- https://stackoverflow.com/a/1275552/1225328 : No puedo agregar la biblioteca específica que permite la etiqueta de
compile
; - https://stackoverflow.com/a/1264622/1225328 : esto gestiona la salida de Ant en lugar de la del compilador;
- Compilación falló; vea la salida de error del compilador para más detalles : demasiado vago para resolver cualquier cosa;
- Ant: la compilación falló; vea la salida de error del compilador para más detalles : sin respuesta ...
- etc.
Debes agregar el atributo depurar
<javac srcdir="${myproject.src}" destdir="${myproject.class}" debug="true>
<!-- ... -->
</javac>
Utilizar esta
<javac srcdir="src" destdir="build/classes" debug="true">
<classpath>
<path refid="classpath"/>
</classpath>
</javac>
El problema también ocurre cuando el compilador java no puede comenzar. Como ejemplo, cuando el montón definido es demasiado grande. La tarea java2 de Intellij mostraría la información
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.
y la causa en el archivo build.xml, en mi caso:
<property name="compiler.args" value="-J-Xmx1600m"/>
Recibía el mismo mensaje de error sin más información. El problema terminó siendo uno de mis archivos .jar estaba dañado. Reemplazar ese archivo .jar resolvió el problema.