The reason is long and boring, but I need to run an Ant script to compile Java 1.5 code from a Java 1.4 app. I keep getting this error, though:
BUILD FAILED build.xml:16: Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK. It is currently set to 'C:\j2sdk1.4.2_16\jre'
In my code, I have:
Project p = new Project(); p.setUserProperty('ant.file', buildFile.getAbsolutePath()); p.setProperty('java.home', 'C:\Program Files\Java\jdk1.6.0_04'); p.fireBuildStarted(); p.init(); // so on and so forth
but it ignores it. I’ve also tried p.setUserProperty(String, String), but that doesn’t do the trick, either. Is there a way to do it without launching a separate process?
Does the javac task in your buildfile have
fork='yes'? If not, then it doesn’t matter what thejava.homeproperty is set to; ant will attempt to call the javacMainmethod in the same java process, which from your error is a JRE, not a JDK.EDIT Try setting the
executableproperty of your javac task to the full path to thejavacbinary and addcompiler='extJavac'to the task.