2009-03-29 16 views
12

Tengo un problema al ejecutar Ant con JDK 1.6 en Mac OS X. Aunque las versiones de la aplicación Java están configuradas en Java SE 6 en la Preferencia Java de OS X, ejecutar java -version en Terminal también muestra java version "1.6.0_07", Ant todavía parece usar JDK 1.5 para usar JDK 1.5 ya que no ve las clases de JDK 1.6 al compilar mi código.Ejecutando Ant con JDK 1.6 en Mac OS X

Entiendo que Ant depende de la variable de entorno JAVA_HOME para especificar qué JDK usar. Sin embargo, no entiendo muy bien cómo se puede establecer esta variable en Mac OS X.

Por lo tanto, mi pregunta es cómo hacer que Ant se ejecute con JDK 1.6 en Mac OS X. Si la forma correcta sigue siendo establecer el entorno JAVA_HOME variable, cómo establecer la variable en OS X.

Respuesta

21

La variable de entorno JAVA_HOME se establece en el archivo .profile de su directorio de inicio. (/Users/ejel/.profile?) Edítelo y configúrelo en lo que desea que sea. Ej .:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home 

Desde este punto en adelante, cada vez que se abre una nueva ventana de terminal que va a establecer la variable JAVA_HOME a este nuevo valor. No habrá cambiado con ninguna ventana abierta existente.

Si realmente está horrorizado al poner esto en el perfil, o si entra en conflicto con otro software, la declaración de exportación siempre se puede ejecutar en el terminal manualmente o ir a un script (por ejemplo: setj6ev.sh) que se ejecuta una vez antes de comenzar a ejecutar tareas de hormiga.

+0

La solución provista es realmente sencilla y funciona. Sin embargo, la ruta correcta al directorio de inicio de Java debería ser /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home – ejel

+0

Mi mal, no lo probé, corregirá, thankx –

+0

Idealmente, debería usar ... ./Versions/Current/Home para que luego pueda cambiar en una etapa posterior qué es la máquina virtual sin tener que actualizar su secuencia de comandos, o mejor aún, .../Versions/CurrentJDK/Home si necesita conectar cosas como, por ejemplo, el compilador – AlBlue

2

Configurar explícitamente la variable JAVA_HOME en su archivo .profile/.bashrc/.zshrc no es realmente la forma recomendada de hacerlo en el mac. Hay programas que he visto solucionar con un JAVA_HOME explícitamente establecido para una versión en particular (por ejemplo, Grails 1.1 con algunos recursos de primavera).

La forma correcta de configurar la versión de Java que desea utilizar es usar la aplicación/Application/Utilities/Java Preferences.app.

Allí, arrastre la versión de java que desea utilizar a la parte superior. Esto habilitará esa versión para todas las aplicaciones (tanto las que se ejecutan desde la línea de comandos como las que se inician a través de los procesos de la GUI).

Usted puede probar la versión actual ejecutando esto desde la línea de comandos:

java -version 

Yo en realidad no como la forma en que el Mac se encarga de todo el conjunto de directorios y archivos de Java enlace simbólico. No es obvio y la gente a menudo lo arruina.

Consulte el apple developer page para más detalles.

+0

Como mencioné en mi pregunta, ya he configurado la versión de Java en JavaPreferences.app. La ejecución de "java -version" muestra "1.6.0_07". Sin embargo, Ant no parece depender de esta propiedad sino de la var de env de JAVA_HOME. – ejel

+0

Lo siento, me perdí eso en el original. Pensé con certeza que esto estaba controlado por la aplicación de Preferencias de Java, pero un poco de prueba muestra que no lo es. Controla el enlace /System/Library/Frameworks/JavaVM.framework/Versions/Current, NO el enlace CurrentJDK. WTF era Apple pensando? –

-1

Es posible que deba abrir una nueva instancia del símbolo del sistema para que el shell pueda detectar cualquier cambio en las variables de entorno.

3

Ted, al utilizar la aplicación Preferencias de Java no cambia el enlace simbólico CurrentJDK en /System/Library/Frameworks/JavaVM.framework/Versions, que es lo que Ant usará si la variable de entorno JAVA_HOME no está configurada. Por lo tanto, puede cambiar ese enlace simbólico manualmente o establecer la variable de entorno JAVA_HOME, pero si no lo hace, Ant no usará el JDK correcto.

Puede ver la versión de jdk que Ant está utilizando emitiendo un mensaje de eco < = "$ {ant.java.version}"/> en su archivo build.xml.

7

he añadido la línea

export JAVA_HOME=`/usr/libexec/java_home` 

Para mi archivo .zshrc, parece hacer el truco (.bash_profile o lo que sea si utiliza bash).

+0

La pregunta acerca de OSX, que no tiene/usr/libexec/java_home. En cualquier caso, el .zshrc es para zsh; el shell predeterminado es bash en OSX. – AlBlue

+1

Estoy en OS X, está ahí. – Theo

2

que probarlo todo, y sólo una cosa funciona para mí: desenlazar CurrentJDK, y el enlace a 1,6:

cd /System/Library/Frameworks/JavaVM.framework/Versions 
sudo unlink CurrentJDK 
sudo ln -sF "1.6" CurrentJDK 

finalmente consigo:

java -version 
java version "1.6.0_22" 

espero que esto ayuda.