Problems debugging Java after ANT compile
Join the DZone community and get the full member experience.
Join For FreeOk, this one is pretty easy but worth posting. I lost a few hours
because of it and I don't want the same to happen to you! Suppose you
want to be able to pass a switch into an ANT target which performs a javac to tell it to include debug information or not.
Your properties file will contain properties such as:
The ANT compile target then uses these properties:
However, the debug information is not there when you are debugging. You run
ant -v compile to get more information. You see:
compile: [echo] This target compiles everything. [echo] Compiling java classes... [echo] compile.debug=true [echo] compile.debug.level=lines,vars,source [javac] ... [javac] Compiling ... [javac] Using modern compiler [javac] Compilation arguments: [javac] '-deprecation' [javac] '-d' [javac] ... [javac] '-classpath' [javac] ... [javac] '-g:none' [javac] '-O' [javac] [javac] ...
Now, as we can see the properties are echo'd as expected. But, the "-g:none" indicates the compile won't include debug information. Before you tear your hair out, relax! You have just made a very silly mistake we all make at sometime. When ANT reads property files it reads all property values literally. This means there is a difference between "true" and "true ", i.e. boolean properties should not have trailing spaces otherwise they will not be read as boolean properties. This is what happened here. Ouch!
![]() |
Ouch - trailing space! |
As it states in http://ant.apache.org/manual/Tasks/property.html, regarding property files: "Trailing spaces are not stripped. It may have been what you wanted."
So rip that trailing space and re-run the ant compile target.
You should see:
which means the compiler is going to add lines, vars and source debug information. Happy debugging!
References:
1. http://ant.apache.org/manual/Tasks/property.html
From http://dublintech.blogspot.com/2011/10/problems-debugging-java-after-ant.html
Opinions expressed by DZone contributors are their own.
Comments