Pregunta

La razón es larga y aburrida, pero necesito ejecutar un script Ant para compilar el código Java 1.5 desde una aplicación Java 1.4. Sin embargo, sigo recibiendo este error:

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"

En mi código, tengo:

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

pero lo ignora. También probé p.setUserProperty (String, String), pero eso tampoco funciona. ¿Hay alguna manera de hacerlo sin iniciar un proceso separado?

¿Fue útil?

Solución

¿La tarea javac en su archivo de compilación tiene fork = " yes " ? De lo contrario, no importa en qué se establezca la propiedad java.home ; Ant intentará llamar al método javac Main en el mismo proceso java, que por su error es un JRE, no un JDK.

EDITAR Intente configurar la propiedad ejecutable de su tarea javac en la ruta completa al binario javac y agregue compiler = " ; extJavac " a la tarea.

Otros consejos

¿No deberían duplicarse las barras invertidas?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");

¿Ha configurado correctamente las variables de entorno JAVA_HOME y ANT_HOME? Sin embargo, si está configurando mediante código, debería funcionar.

Compruebe también si su directorio% JAVA_HOME% \ bin% ANT_HOME% \ bin debe estar en la variable de entorno 'ruta'.

Su problema parece ser que% JAVA_HOME% \ bin no está presente en el entorno. ruta variable sin embargo.

Otra forma de hacer que esto funcione es agregar 'tools.jar' a su classpath. El compilador javac está contenido dentro de este jar.

java -cp $ JAVA_HOME / lib / tools.jar ...

La opción

javac está disponible en tools.jar. En eclipse, incluso si su JRE HOME apunta a un jdk, todas las bibliotecas del sistema apuntan a JDK_HOME \ jre \ lib. No hay herramientas.jar. Puede agregar tools.jar como un archivo Jar externo. Esto debería resolver tu problema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top