Java es un paquete opcional en las últimas versiones de macOS.
Sin embargo, una vez instalado, parece que la variable de entorno JAVA_HOME no está configurada correctamente .
Java es un paquete opcional en las últimas versiones de macOS.
Sin embargo, una vez instalado, parece que la variable de entorno JAVA_HOME no está configurada correctamente .
Respuestas:
Con el paquete opcional Java u Oracle JDK instalado, agregar una de las siguientes líneas a su archivo ~ / .bash_profile establecerá la variable de entorno en consecuencia.
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
Actualización: agregado el indicador -v basado en la respuesta de Jilles van Gurp .
/usr/libexec/java_home
no es un directorio sino un ejecutable. Produce el JAVA_HOME configurado actualmente y en realidad no lo cambia. Para eso está la aplicación de Preferencias de Java, que en mi caso parece rota y en realidad no cambia la JVM correctamente. Enumera la JVM 1.7, pero puedo alternar / alternar y arrastrar y soltar todo lo que quiero allí sin cambiar realmente la salida de /usr/libexec/java_home
.
Incluso después de instalar 1.7.0 u6 desde Oracle en Lion y configurarlo como el predeterminado en las preferencias, todavía devolvió el apple 1.6 java a casa. La única solución que realmente funciona para mí es configurar JAVA_HOME manualmente:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Al menos de esta manera, cuando se ejecuta desde la línea de comandos, usará 1.7. /usr/libexec/java_home
Todavía insiste en 1.6.
Actualización : Comprender Java desde la línea de comandos en OSX tiene una mejor explicación de cómo funciona esto.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
es la forma de hacerlo Tenga en cuenta que actualizar esto a 1.8 funciona bien.
Para mí, Mountain Lion 10.8.2, la solución más votada no funciona. Instalé jdk 1.7 a través de Oracle y maven desde homebrew.
Mi solución es del archivo hadoop-env.sh de hadoop que también instalé desde homebrew. Agrego la siguiente oración en ~ / .bash_profile, y funciona.
export JAVA_HOME="$(/usr/libexec/java_home)"
Esta solución también funciona para OS X Yosemite con Java 1.8 instalado desde Oracle.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Ninguna de las respuestas anteriores me ayudó. Supongo que todas las respuestas son para mayoresOS X
Para OS X Yosemite 10.10, siga estos pasos
Use su editor de texto favorito para abrir: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Agregue la siguiente línea en el archivo y guárdelo (: seguido de "x" para vim):
export JAVA_HOME=$(/usr/libexec/java_home)
Luego, en el terminal, escriba los siguientes dos comandos para ver la salida:
$ source ~/.bash_profile
$ echo $JAVA_HOME
En la segunda línea, está actualizando el contenido del .bash_profile
archivo.
Actualización para Java 9 y algunos alias claros.
En .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Tenga en cuenta que para la última versión es 9
y no 1.9
.
Establecer Java activo:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Algunos alias adicionales para cambiar entre las diferentes versiones:
alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'
Prueba en terminal:
% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
EDITAR: Actualización para Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDITAR: Actualización para Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Lo anterior no funcionó para mí con las herramientas EC2 de Amazon, porque se espera, bin/java
etc., debajo JAVA_HOME
. /System/Library/Frameworks/JavaVM.framework/Home
funcionó
En Mac OS X Lion, para configurar que visualgc se ejecute, utilicé:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? el comando / usr / libexec / java_home devuelve /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Lo siguiente funcionó para mí. Estoy usando ZSH en OSX Yosemite con Java 8 instalado.
El siguiente comando /usr/libexec/java_home
emite la ruta al inicio de JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
En su ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Una forma mejor (más actualizable) es usar lo siguiente:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Esto debería funcionar con AWS también ya que se encuentra bin
debajo de Inicio
Las nuevas JVM de Oracle como 1.7.0_21-b12 parecen instalarse aquí:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
herramienta devuelve un error para estas versiones de Java.
para macOS Mojave 10.14.1 y JAVA 11.0.1 configuré el perfil como
export JAVA_HOME=$(/usr/libexec/java_home)
teclee esto en la terminal para confirmar:
$JAVA_HOME/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
Mi enfoque es:
.bashrc
export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME
# -- optional
# export PATH=$JAVA_HOME/bin:$PATH
Esto hace que sea muy fácil cambiar entre J6 y J7
Tuve que establecerlo explícitamente en la ruta exacta en mi Macbook air.
Pasos seguidos:
echo $JAVA_HOME
(si está configurado, mostrará la ruta), si no, intente buscarlo usandosudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Estoy ejecutando MACOS MOJAVE - 10.14.2 (18C54) en un Macbook Air con JAVA 8
Para Mac OS X 10.9 instalé la última versión de JRE de Oracle y luego restablecí JAVA_HOME a /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Estoy seguro de que hay una mejor manera, pero me puso en marcha.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX Yosemite, ZSH y Java SE Runtime Environment 8, tuve que:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
y en ~ / .zshrc cambia JAVA_HOME a
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
Tengo el mismo problema después de actualizar mi Mac OS y lo siguiente funcionó para mí:
cmd> vi ~ / .bash_profile
Agregue / actualice la línea para JAVA_HOME: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"
cmd> source ~ / .bash_profile o abra una nueva terminal
Creo que la versión jdk puede diferir, así que solo usa la versión que tienes en / Library / Java / JavaVirtualMachines /
Si necesita tener varias versiones de JDK en Mac OS X (Yosemite), puede ser útil agregar algunas secuencias de comandos para el cambio automático entre ellas.
Lo que debe hacer es editar su ~ / .bash_profile y agregar lo siguiente:
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
Lo que hace el script es eliminar primero otras versiones de JDK en la RUTA para que no interfieran con nuestra nueva versión de JDK. Luego hace un uso inteligente de / usr / libexec / java_home, que es un comando que enumera las versiones instaladas de JDK. El argumento -v le dice a java_home que devuelva la ruta del JDK con la versión suministrada, por ejemplo 1.7. También actualizamos la RUTA para que apunte al directorio bin del directorio JAVA_HOME recién encontrado . Al final podemos simplemente ejecutar la función usando
setjdk 1.7
que selecciona la última versión instalada de JDK de la rama 1.7. Para seleccionar una versión específica, simplemente puede ejecutar
setjdk 1.7.0_51
en lugar. Ejecute / usr / libexec / java_home -V para obtener más detalles sobre cómo elegir versiones.
PD: no olvide obtener ~ / .bash_profile después de guardarlo.
Esta respuesta está relacionada con Mountain Lion y no con Lion. Necesitaba hacer esto para las herramientas de línea de comandos de AWS. Según los documentos de AWS , la ejecución de which java
devoluciones /usr/bin/java
.
Entonces, me puse JAVA_HOME=/usr
en mi .bashrc
.
Aparentemente, /usr/bin/java
es un enlace simbólico al /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
que hace que todo funcione.
Actualizar
Como se menciona en el comentario a continuación, este JAVA_HOME
valor no es una solución ideal cuando la JAVA_HOME
variable de entorno debe ser utilizada por otras cosas que no sean las Herramientas de línea de comandos de AWS. Sin embargo, funciona bien para las herramientas de línea de comandos de AWS, como se indica en sus documentos.
Para Mac Yosemite,
JDK 1.7.0_xx está utilizando
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
Estoy usando Fish Shell en High Sierra 10.13.4 e instalé Java a través de Brew.
No está configurado automáticamente, así que para configurarlo correctamente en mi sistema ejecuto:
set -U JAVA_HOME (/usr/libexec/java_home)
Simplemente configure java_home de la versión 1.8 jdk en el netbeans.conf
archivo:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
línea de comentario:
netbeans_jdkhome="path/to/jdk"
y establecer la ruta a su 1.8 jdk, en mi caso:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Este enfoque le permite tener varias versiones jdk en mac os
Para los usuarios de terminales Fish en Mac (creo que también está disponible en Linux), esto debería funcionar:
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
para usuarios de mac. Java 8 debería agregar
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Java 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home