2009-06-04 21 views
63

Estoy usando Ant 1.7.0 e instalé java 1.6 que está en JAVA_HOME.Ant está usando la versión incorrecta de Java

Quiero construir un proyecto usando java 1.5, por lo que he exportado JAVA_HOME para que sea mi directorio java 1.5.

java -version 

dice "1.5". Cuando ejecuto Ant usa java 1.6.

+2

¿Qué sistema operativo está utilizando? –

+1

Puede escribir un script por lotes para especificar exactamente cómo ejecutarlo. Si solo está compilando, puede especificar la versión en el comando, como:

Respuesta

17

De acuerdo con ant manual, la configuración de JAVA_HOME debería funcionar: ¿está seguro de que la configuración modificada es visible para la hormiga?

Alternativamente, podría usar la variable JAVACMD.

+1

Tengo el problema yo mismo atm y JAVA_HOME está apuntando al JDK correcto, sin embargo, la hormiga todavía está informando la versión de Java incorrecta. –

12

Ejecutar horm en modo detallado: ant -v y busca pistas.

+1

Esto me ayudó mucho. Primero intenté construir un proyecto en una lib con jdk 1.8. Más tarde descubrí que necesitaba construirlo en 1.7, así que instalé jdk 1.7, cambié JAVA_HOME pero aún así lo construí con 1.8. Utilizando 'ant -v' descubrí que hormiga estaba usando correctamente jdk1.7, sin embargo, la compilación omitía todas las clases en la carpeta temporal porque ya estaban allí debido a mi intento anterior. Así que todo lo que hice fue eliminar la carpeta temporal, y la volvió a crear, esta vez con jdk 1.7 como yo quería. Podría ayudar a alguien –

5

También puede especificar en una tarea javac qué nivel de compatibilidad (1.4, 1.5, 1.6) que desea utilizar, puede establecer la "fuente" y "objetivo" valores de nivel, comprobar los documentos aquí: Javac task documentation

+1

Para garantizar la compatibilidad, también agregue la opción '-bootclasspath' al compilar. –

14

Puede usar las propiedades de origen y destino en la etiqueta javac para establecer un tiempo de ejecución de destino. El siguiente ejemplo compilará cualquier código fuente para orientar la versión 1.4 en cualquier compilador que admita la versión 1.4 o posterior.

<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}"> 

Nota: El 'srcdir' y 'destdir' se establecen los demás valores de la propiedad, donde en el script de creación, por ejemplo, <property name="classes" value="c:/classes" />

10

que podría lograr que, con los pasos siguientes, si está utilizando Eclipse IDE:

  1. Haga clic derecho sobre la tarea en su archivo ant build (build.xml).

  2. Pase el mouse sobre "Ejecutar como", haga clic en "Configuraciones de herramientas externas ...".

  3. Añadir seguidores a "Argumentos":

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5 
    
67

Sólo tuvimos este problema, sucedió porque primero había añadido el fichero de construcción de la hormiga-vista cuando el JRE por defecto fue de 1,6.

No hubo JRE específico del proyecto y cambié el valor predeterminado a 1.5, incluso eclipse se estaba ejecutando en 1.5, y JAVA_HOME también era 1.5. Ejecutando el objetivo ant desde la línea de comando usó JRE 1.5, pero dentro del eclipse todavía usó 1.6.

Tuve que hacer clic derecho en el objetivo ant, seleccionar Ejecutar como ... y cambiar el JRE bajo la pestaña JRE. Esta configuración se recuerda para ejecuciones posteriores.

+5

Me acabo de dar cuenta de que la pregunta no mencionaba a Eclipse en absoluto. Mi respuesta es para el problema descrito al usar Eclipse. –

+1

Gracias por terminar unas pocas horas de frustración. –

+0

si no está usando eclipse, entonces vea mi respuesta en la parte inferior. –

1

Si ejecuta Ant from eclipse, el eclipse usará jdk o jre que está configurado en class-path (compilación).

+0

Sí por defecto, pero puede configurarse para cada archivo de hormiga de manera diferente, por lo que comprobar cada uno puede ser crucial ... –

+6

Para saber con certeza qué es la versión de java ant: '' – dmolony

+0

Aprender acerca de $ {ant.java.version} fue una gran cosa para mí, ¡gracias! – javydreamercsw

5

Esta es una vieja pregunta, pero agregaré mis notas para futuras referencias.

Tuve un problema similar y lo solucioné cambiando el orden de las exportaciones en la variable PATH.

Por ejemplo yo estaba usando un método de concatenación de cadenas a mi trazado llevando a cabo (esto es sólo un ejemplo):

$> export PATH='$PATH:'$JAVA_HOME 

Si mi variable PATH ya tenía un java en ella, el último valor habría sin sentido, así el orden sería importante. Para resolver esto comencé a invertirlo agregando mi variable primero, luego agregué la RUTA.

Siguiendo esta idea, invertí el orden en que se exportaba ANT_HOME. Agregar JAVA_HOME antes de ANT_HOME.

Esto podría ser solo una coincidencia, pero funcionó para mí.

+0

Esto me pasó a mí también. No estaba seguro de qué entrada entraba en conflicto con JAVA_HOME, pero cuando lo puse al principio de PATH, funcionó. – Inversus

26

¡Fácil!

En Eclipse:

  • Haga clic derecho en su build.xml

  • clic en "Ejecutar como", haga clic en "Herramienta Configuraciones externos ..."

  • Seleccionar pestaña JRE. Seleccione el JRE que está utilizando.

Vuelva a ejecutar la tarea, debería estar bien ahora.

+0

Gracias, esto es exactamente lo que necesitaba hacer. –

1

Utilice los siguientes 2 viviendas en javac etiqueta:

fork="yes" 
executable="full-path-to-the-javac-you-want-to-use". 

Explicación de las propiedades se puede encontrar here

4

Crear archivo:

<target name="print-version"> 
    <echo>Java/JVM version: ${ant.java.version}</echo> 
    <echo>Java/JVM detail version: ${java.version}</echo> 
</target> 

Salida:

[echo] Java/JVM version: 1.5 
[echo] Java/JVM detail version: 1.5.0_08 
0

De manera predeterminada, Ant considerará el JRE como la versión JRE del espacio de trabajo. Debe cambiar de acuerdo con su versión requerida siguiendo el siguiente.

En Eclipse:

  • Haga clic derecho en su build.xml clic en "Ejecutar como", haga clic en "herramienta externa Configuraciones ..." Seleccione la pestaña de JRE.

  • Seleccione el JRE que está utilizando.

  • Vuelva a ejecutar la tarea, debería estar bien ahora.

Cuestiones relacionadas