En Mac Sierra, tengo / Library / Java / JavaVirtualMachines que tiene jdk y System Preferences> Java, ¿qué diferencia hay entre estos 2?
vikramvi
pregunta diferente, gracias
Olivier Refalo
No subestimes las posibilidades de que tu instalación de Java no se haya completado correctamente. Si ninguna de las siguientes sugerencias excelentes parecen funcionar, intente [volver a instalar].
MarkHu
Respuestas:
1059
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 .
Bueno saber. Tengo que decir que no estoy muy emocionado con la lista de características de Lion. No parece haber muchas mejoras en mi uso ...
prodigitalson
1
@Oliver: ewww :-) Eso es probablemente lo menos útil ... Siempre tengo varias ventanas abiertas y organizadas en la pantalla para poder ver varias cosas a la vez ... por lo general, un diseño diferente en cada espacio.
prodigitalson
11
Esto no funcionó para mí. /System/Library/Frameworks/JavaVM.framework/Home trabajado.
chaostheory
77
¡Funciona también en Maverick!
cbare
3
Para Java 11 y High Sierra, exporte JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)"
Willie Z
112
/usr/libexec/java_homeno 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:
Hubiera funcionado si hubiera instalado Java 6 de Apple. el punto aquí es que estás usando
Oracle
2
Esto me funciona muy bien en Mavricks, pero la ubicación del script java_home es diferente. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost
1
Traté de configurar maven en mac Yosemite, de esta manera, configurar JAVA_HOME funciona para mí.
Alocus
Funciona para mí en Sierra 10.12 y Java 8
Kanak Sony
41
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_profilearchivo.
Creo que obtuve tu pb - usas comillas en lugar de comillas inversas 'vs'
Olivier Refalo
No, estoy usando las comillas correctas, en su lugar intenté copiar y pegar, no funcionó. Actualicé mi respuesta porque funcionó para mí.
Giri
@ OlivierRefalo Puedo ver que has actualizado tu respuesta con comillas dobles ("). Pero incluso sin comillas, funciona.
Giri
Muchas gracias . Me funcionó en Yosemite 10.10
Vijay
2
Esta es la única solución, que realmente funciona. Agregar ruta por cualquier otra solución, se agregará de forma temporal, hasta que finalice el terminal y la ruta desaparezca. Para agregarse permanentemente, la ruta debe guardarse en el archivo .bash_profile. Mientras tanto, usé nano en lugar de vim, por simplicidad.
Lo anterior no funcionó para mí con las herramientas EC2 de Amazon, porque se espera, bin/javaetc., debajo JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Homefuncionó
¿Era león? ¿Recibió el paquete oficial de Java de Apple o Java6 / 7 de Oracle?
Olivier Refalo
Creo que fue el paquete Java de Apple.
Cawflands
1
@ AndrewH sí, encontré que lo mismo es cierto. Instalé el paquete Java de Apple y descubrí la ruta real de la biblioteca (por ejemplo, para establecer -vm en eclipse.ini): /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub
Gracias por la info. Tal vez soy demasiado simple, pero ¿por qué OS X hace que algo tan simple sea un completo desastre?
No entiendo tu propuesta: ¿en qué se diferencia eso de exportar JAVA_HOME = /usr/libexec/java_home ? el comando / usr / libexec / java_home devuelve /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Olivier Refalo
Para visualgc / usr / libexec / java_home produce: El java.exe que se encuentra en: / usr / libexec / java_home no está en un directorio JDK. Establezca y exporte su variable de entorno JVMSTAT_JAVA_HOME para hacer referencia a un directorio que contenga el JDK Sun J2SE 1.5.0 (no un JRE) e intente nuevamente.
EGHM
13
Lo siguiente funcionó para mí. Estoy usando ZSH en OSX Yosemite con Java 8 instalado.
El siguiente comando /usr/libexec/java_homeemite la ruta al inicio de JDK:
tipo de desacuerdo con esa afirmación "más actualizable" / usr / libexec / java_home es un exe que devuelve una ruta, no una ruta fija. Además de depender de la versión de jvm que use, la ruta anterior no coincidirá
Olivier Refalo
10
Las nuevas JVM de Oracle como 1.7.0_21-b12 parecen instalarse aquí:
De hecho, y la /usr/libexec/java_homeherramienta devuelve un error para estas versiones de Java.
Joe Dyndale
1
Esta es la única respuesta que funciona para mí después de descargar v1.7 JRE
maxrossello
2
Esta es la ruta si instala el JRE. La mayoría de las respuestas y comentarios calificados son sobre el JDK. No es lo mismo
8Ninguno1
9
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 RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer VM 18.9(build 11.0.1+13-LTS, mixed mode)
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.
En una nueva instalación de Mavericks, esta es la única solución que funcionó para mí. Tuve que señalar sqldeveloper a la casa jdk ubicada aquí (como lo sugiere este hilo para que funcione.)
Chris
2
OSX Yosemite, ZSH y Java SE Runtime Environment 8, tuve que:
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 javadevoluciones /usr/bin/java.
Entonces, me puse JAVA_HOME=/usren mi .bashrc.
Aparentemente, /usr/bin/javaes un enlace simbólico al /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaque hace que todo funcione.
Actualizar
Como se menciona en el comentario a continuación, este JAVA_HOMEvalor no es una solución ideal cuando la JAVA_HOMEvariable 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.
el punto es que / usr no es un directorio correcto de JAVA_HOME. Está bien ubicar bin / java. Pero a veces los constructores (ant, make) usan JAVA_HOME para hacer referencia al compilador de javac en lib / tools.jar Su solución fallará para ellos
Olivier Refalo
Ah, gracias por la información. Tienes razón. Se actualizará la respuesta.
Anjan
0
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
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
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.
Actualización: agregado el indicador -v basado en la respuesta de Jilles van Gurp .
fuente
/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:
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.
es la forma de hacerlo Tenga en cuenta que actualizar esto a 1.8 funciona bien.
fuente
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.
Esta solución también funciona para OS X Yosemite con Java 1.8 instalado desde Oracle.
fuente
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 mayores
OS X
Para OS X Yosemite 10.10, siga estos pasos
Use su editor de texto favorito para abrir:
~/.bash_profile
Agregue la siguiente línea en el archivo y guárdelo (: seguido de "x" para vim):
Luego, en el terminal, escriba los siguientes dos comandos para ver la salida:
En la segunda línea, está actualizando el contenido del
.bash_profile
archivo.fuente
Actualización para Java 9 y algunos alias claros.
En
.bash_profile
:Tenga en cuenta que para la última versión es
9
y no1.9
.Establecer Java activo:
Algunos alias adicionales para cambiar entre las diferentes versiones:
Prueba en terminal:
EDITAR: Actualización para Java 10
EDITAR: Actualización para Java 11
fuente
Lo anterior no funcionó para mí con las herramientas EC2 de Amazon, porque se espera,
bin/java
etc., debajoJAVA_HOME
./System/Library/Frameworks/JavaVM.framework/Home
funcionófuente
Para OS X puedes hacer:
fuente
En Mac OS X Lion, para configurar que visualgc se ejecute, utilicé:
fuente
/usr/libexec/java_home
? el comando / usr / libexec / java_home devuelve /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/HomeLo 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
,fuente
Una forma mejor (más actualizable) es usar lo siguiente:
Esto debería funcionar con AWS también ya que se encuentra
bin
debajo de Iniciofuente
Las nuevas JVM de Oracle como 1.7.0_21-b12 parecen instalarse aquí:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
fuente
/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
teclee esto en la terminal para confirmar:
fuente
Mi enfoque es:
.bashrc
Esto hace que sea muy fácil cambiar entre J6 y J7
fuente
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
fuente
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
fuente
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"
fuente
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 /
fuente
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:
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
que selecciona la última versión instalada de JDK de la rama 1.7. Para seleccionar una versión específica, simplemente puede ejecutar
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.
fuente
Para Java 11 (JDK 11) se puede ubicar con el siguiente comando:
fuente
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 laJAVA_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.fuente
Para Mac Yosemite,
JDK 1.7.0_xx está utilizando
fuente
Cualquier persona que use AUSKEY de la Oficina de Impuestos de Australia (ATO) debe desinstalar AUSKEY. Esto solucionó mis problemas JAVA_HOME.
Tampoco es necesario para los usuarios de MAC. Yah!
fuente
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:
fuente
Simplemente configure java_home de la versión 1.8 jdk en el
netbeans.conf
archivo:línea de comentario:
y establecer la ruta a su 1.8 jdk, en mi caso:
Este enfoque le permite tener varias versiones jdk en mac os
fuente
Para los usuarios de terminales Fish en Mac (creo que también está disponible en Linux), esto debería funcionar:
fuente
para usuarios de mac. Java 8 debería agregar
Java 6:
ref: http://qiita.com/seri_k/items/e978c1339ce51f13e297
fuente