¿A qué debería configurar JAVA_HOME en OSX?

Muchas aplicaciones Java que usan scripts de shell para configurar su entorno usan la variable de entorno JAVA_HOME para iniciar la versión correcta de Java, ubicar JRE JAR, y más.

En OSX 10.6, las siguientes rutas parecen ser válidas para esta variable

 /Library/Java/Home /System/Library/Frameworks/JavaVM.framework/Home /System/Library/Frameworks/JavaVM.framework/Versions/Current 

Algunos de estos son enlaces simbólicos a la máquina virtual actual (tal como se define en el panel Preferencia de Java).

¿Pero cuál debería usarse, o está bien usar cualquiera de ellos?

¿Snow Leopard todavía tiene /usr/libexec/java_home ? En 10.5, simplemente configuro JAVA_HOME a la salida de ese comando, que debería darle la ruta de Java especificada en sus preferencias de Java. Aquí hay un fragmento de mi archivo .bashrc , que establece esta variable:

 export JAVA_HOME=$(/usr/libexec/java_home) 

No he tenido ningún problema con esa técnica.

Ocasionalmente tengo que cambiar el valor de JAVA_HOME a una versión anterior de Java. Por ejemplo, un progtwig que estoy manteniendo requiere Java 5 de 32 bits en OS X, así que cuando uso ese progtwig, configuro JAVA_HOME ejecutando:

 export JAVA_HOME=$(/usr/libexec/java_home -v 1.5) 

Para aquellos de ustedes que no tienen java_home en su camino, agréguenlo de esta manera.

 sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home 

Además, es interesante configurar tu PATH para que refleje el JDK. Después de agregar JAVA_HOME (que se puede hacer con el ejemplo citado por ‘mipadi’):

export JAVA_HOME=$(/usr/libexec/java_home)

Agregar también en ~ / .profile:

export PATH=${JAVA_HOME}/bin:$PATH

PD: para OSX, generalmente uso .profile en el directorio HOME en lugar de .bashrc

Hoy en día parece que Java está instalado en / Library / Java / Java VirtualMachines

Tengo MAC OS X (Sierra) 10.12.2 .

Establecí JAVA_HOME para trabajar en React Native (para aplicaciones de Android) siguiendo los siguientes pasos.

  • Abrir Terminal (Comando + R, escriba Terminal, presione ENTER).

  • Agregue las siguientes líneas a ~ / .bash_profile . export JAVA_HOME=$(/usr/libexec/java_home)

  • Ahora ejecuta el siguiente comando. source ~/.bash_profile

  • Puede verificar el valor exacto de JAVA_HOME escribiendo el siguiente comando. echo $JAVA_HOME

El valor (salida) devuelto será algo como a continuación. /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

Eso es.

Estoy en Mac OS 10.6.8

La solución más fácil funciona para mí simplemente se pone en

 $ export JAVA_HOME=$(/usr/libexec/java_home) 

Para probar si funciona, ponga

 $ echo $JAVA_HOME 

muestra

 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

también puedes probar

 $ which java 

Tiendo a usar /Library/Java/Home . La forma en que funciona el panel de preferencias debe estar actualizado con su versión preferida.

¡Lo de arriba ya no funciona en YOSEMITE para APLICACIONES GRÁFICAS! Como eclipse, o cualquier cosa que haya comenzado con Spotlight. (.bash_profile, launchd.conf funciona solo para sesiones de terminal). Antes de iniciar eclipse, solo abra una ventana de terminal y emita el siguiente comando:

launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(¡Con su ruta de instalación! Tal vez funcione con $ (/ usr / libexec / java_home) en lugar de la ruta completa también).

Vea todo el excelente artículo sobre la solución permanente aquí: Establecer variables de entorno a través de launchd.conf ya no funciona en OS X Yosemite / El Capitan / macOS Sierra?

Encontré esta stack para ayudar, estaba teniendo el mismo problema y podría solucionarlo:

Mi ruta de Java estaba aquí:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

y fue necesario ponerlo en mi .bash_profile :

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

Espero ayuda

Como se señala en otras respuestas, la forma correcta de encontrar el directorio de inicio de Java es usar /usr/libexec/java_home .

La documentación oficial para esto está en Q & A Technical Q & A de Apple: Directorios importantes de Java en OS X : https://developer.apple.com/library/mac/qa/qa1170/_index.html

Para mí, maven parece funcionar fuera del archivo .mavenrc :

 echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc 

Estoy seguro de que también lo recogí en SO, simplemente no puedo recordar dónde.

Omisión de la configuración de la Terminal desde que mencionó las aplicaciones, configuración permanente de la variable de entorno del sistema (funciona para macOS Sierra; también debería funcionar para El Capitán):

 launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8) 

(Esto establecerá JAVA_HOME en el último 1.8 JDK, es probable que haya pasado por varias actualizaciones, por ejemplo, javac 1.8.0_101, javac 1.8.0_131)
Por supuesto, cambie 1.8 a 1.7 o 1.6 (¿realmente?) Para satisfacer sus necesidades y su sistema

Crear archivo ~/.mavenrc

luego pegar esto en el archivo

export JAVA_HOME=$(/usr/libexec/java_home)

prueba

mvn -v

Para los usuarios de Fish Shell, use algo como lo siguiente: alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"