¿Cómo establecer o cambiar la versión Java (JDK) predeterminada en OS X?

¿Cómo se puede cambiar la versión predeterminada de Java en un Mac?

Primero ejecute /usr/libexec/java_home -V que generará algo como lo siguiente:

 Matching Java Virtual Machines (3): 1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 

Elija la versión que desea que sea la predeterminada ( 1.6.0_65-b14-462 por argumentos) y luego:

 export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462` 

o puede especificar solo la versión principal, como:

 export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

Ahora cuando ejecute la java -version verá:

 java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode) 

Simplemente agregue la línea export JAVA_HOME… de export JAVA_HOME… al archivo de inicio de su shell.

Esta respuesta es un bash de abordar: cómo controlar la versión de Java en todo el sistema (no solo en el shell actualmente en ejecución) cuando se instalan varias versiones de JDK para fines de desarrollo en macOS El Capitan & Sierra . Por lo que puedo decir, ninguna de las respuestas actuales hace eso (*).

Como desarrollador, uso varios JDK, y quiero cambiar de uno a otro fácilmente. Por lo general, tengo la última versión estable (Java 8 ahora) para uso general, y otras para pruebas (por ejemplo, una JDK7 antigua y una JDK9 de “acceso anticipado”, por ejemplo). Pero no quiero que el sistema use Java 9 (por ejemplo, cuando empiezo mi IDE) por ahora. El valor predeterminado debe ser el último estable.

Mi solución actual:

  • deje todos los JDK en su ubicación predeterminada, en /Library/Java/JavaVirtualMachines . El sistema elegirá la versión más alta de manera predeterminada.
  • Para excluir un JDK de ser elegido por defecto, cambie el nombre de su Contents/Info.plist a Info.plist.disabled . Ese JDK aún se puede usar cuando $JAVA_HOME señala, o hace referencia explícita en un script o configuración. Simplemente será ignorado por el comando java del sistema.

System launcher utilizará el JDK con la versión más alta entre los que tienen un archivo Info.plist .

Cuando trabaje en un shell con JDK alternativo, elija su método entre las respuestas existentes ( jenv o alias / scripts personalizados en /usr/libexec/java_home , etc.).


Detalles de la investigación en esta esencia .


(*) Las respuestas actuales son obsoletas (ya no son válidas para macOS El Capitan o Sierra), o solo abordan un solo JDK, o no abordan el aspecto de todo el sistema. Muchos explican cómo cambiar $JAVA_HOME , pero esto solo afecta al shell actual y lo que se inicia desde allí. No afectará una aplicación iniciada desde el iniciador del sistema operativo (a menos que cambie el archivo correcto y cierre de sesión / inicio de sesión, lo que es tedioso). Lo mismo para jenv, es genial y todo, pero hasta donde puedo decir, simplemente cambia las variables de entorno, por lo que tiene la misma limitación.

Agregando a las respuestas anteriores, puse las siguientes líneas en mi .bash_profile que hace que sea muy conveniente cambiar (incluido el comentario de @ elektromin para java 9):

 alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version" alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version" alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version" alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version" alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version" alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version" 

Después de insertar, ejecute $ source .bash_profile

Puedo cambiar a Java 8 escribiendo lo siguiente:

 $ j8 java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 

Una función de pez pequeña basada en / usr / libexec / java_home

 function jhome set JAVA_HOME (/usr/libexec/java_home $argv) echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version end 

Si no usas peces, puedes hacer algo similar en bash:

 #!/bin/bash jhome () { export JAVA_HOME=`/usr/libexec/java_home $@` echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version } 

Entonces para cambiar entre javas hacer:

 $> jhome #switches to latest java $> jhome -v 1.7 #switches to java 1.7 $> jhome -v 1.6 #switches to java 1.6 

ref: https://gist.github.com/kenglxn/1843d552dff4d4233271

Usar jenv es una manera fácil.

1. Instalar jenv

  curl -s get.jenv.io |  bash 

2.Config jenv

     cd ~ / .jenv / candidates /
     mkdir java
     cd java
     mkdir 1.7
     mkdir 1.8

3.Similar la ruta jdk

     En -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / candidates / java / 1.7
     En -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / candidates / java / 1.8

4.Todo está listo

comando de cambio:

jenv use java 1.8

establecer predeterminado:

jenv default java 1.7

Es un poco complicado, pero trate de seguir los pasos descritos en Instalación de Java en OS X 10.9 (Mavericks) . Básicamente, vas a tener que actualizar tu alias a java .

Paso a paso:

Después de instalar JDK 1.7, deberá hacer sudo ln -snf para cambiar el enlace a java actual. Para hacerlo, abra Terminal y emita el comando:

 sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK 

Tenga en cuenta que el directorio jdk1.7.0_51.jdk puede cambiar dependiendo de la versión del SDK que haya instalado.

Ahora, debe configurar JAVA_HOME para que apunte donde se instaló jdk_1.7.0_xx.jdk . Abre nuevamente la Terminal y escribe:

 export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home" 

Puede agregar la línea export JAVA_HOME en su archivo .bashrc para tener java permanentemente en su Terminal

instala JDK, no solo JRE

 /usr/libexec/java_home -v 1.8 

da

 /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home 

siguiente

 touch .bash_profile open -a TextEdit.app .bash_profile 

TextEdit le mostrará una página en blanco que puede completar.

agregar al documento: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

en la terminal:

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

prueba el comando:

javac -version

debería salir:

 javac 1.8.0_111 
 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 } 

ponlo en tu ~ / .profile y úsalo en tu terminal como setjdk 1.8 , setjdk 1.7 , setjdk 9 etc etc …

Si no tiene removeFromPath entonces es:

function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }

Agrega la línea:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

al archivo

~/.bash_profile

reemplace con su versión descargada.

Desde la página del manual java_home (1) oficial de Apple:

 **USAGE** /usr/libexec/java_home helps users set a $JAVA_HOME in their login rc files, or provides a way for command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi- tecture requirement. The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory, which is useful for starting Java command-line tools from launchd plists without hardcoding the full path to the Java command-line tool. Usage for bash-style shells: $ export JAVA_HOME=`/usr/libexec/java_home` Usage for csh-style shells: % setenv JAVA_HOME `/usr/libexec/java_home` 

Use jenv, es como un administrador de entorno de Java. Es súper fácil de usar y limpiar

Para Mac, sigue los pasos:

 brew install jenv git clone https://github.com/gcuisinier/jenv.git ~/.jenv 

Instalación: si está utilizando bash, siga estos pasos:

 $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(jenv init -)"' >> ~/.bash_profile $ exec $SHELL -l 

Agregue las versiones deseadas de JVM a jenv:

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

jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

Verifique las versiones instaladas:

 jenv versions 

Establezca la versión de Java que quiere usar:

 jenv global oracle64-1.6.0 

JDK Switch Script

He adaptado la respuesta de @Alex anterior y escribí lo siguiente para corregir el código de Java 9.

 $ cat ~/.jdk #!/bin/bash #list available jdks alias jdks="/usr/libexec/java_home -V" # jdk version switching - eg `jdk 6` will switch to version 1.6 function jdk() { echo "Switching java version $1"; requestedVersion=$1 oldStyleVersion=8 # Set the version if [ $requestedVersion -gt $oldStyleVersion ]; then export JAVA_HOME=$(/usr/libexec/java_home -v $1); else export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; fi echo "Setting JAVA_HOME=$JAVA_HOME" which java java -version; } 

Cambiar a Java 8

 $ jdk 8 Switching java version 8 Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home /usr/bin/java java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 

Cambiar a Java 9

 $ jdk 9 Switching java version 9 Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home /usr/bin/java java version "9.0.1" Java(TM) SE Runtime Environment (build 9.0.1+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode) 

Si está utilizando pescado y está utilizando mac y quiere cambiar entre JDK, a continuación, funciona para mí en mac.

La respuesta de @Kenglxn no funcionó para mí y me di cuenta de que el bcos no configuró -g ¡que es global!

Coloque debajo debajo de ~ / .config / fish / config.fish

 alias j8="jhome -v 1.8.0_162" alias j9="jhome -v 9.0.1" function jhome set -g -x JAVA_HOME (/usr/libexec/java_home $argv) echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version end funcsave jhome 

Para saber qué versión / versión menor tiene instalada, puede hacer:

 /usr/libexec/java_home -V 579ms  Wed 14 Feb 11:44:01 2018 Matching Java Virtual Machines (3): 9.0.1, x86_64: "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home 1.8.0_162, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home 1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 

Basado en la respuesta de @markhellewell, creé un par de funciones de alias que lo harán por usted. Solo agrégalos a tu archivo de inicio de shell

 #list available jdks alias jdks="/usr/libexec/java_home -V" # jdk version switching - eg `jdk 6` will switch to version 1.6 function jdk() { echo "Switching java version"; export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; java -version; } 

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4

Esta herramienta hará el trabajo por usted:

http://www.guigarage.com/2013/02/change-java-version-on-mac-os/

Es un JavaOne simple que puede usarse para definir la versión actual de Java. La versión se puede usar en un shell que se abre después de que se seleccionó una versión en la herramienta.

Si tiene varias versiones y desea ejecutar algo utilizando una versión específica, use este ejemplo:

 /usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar 

SOLUCIÓN MUY FÁCIL: Qué dolor de cabeza: esta fue una solución fácil y rápida que funcionó para mí.

Mac OS Sierra versión 10.12.13

  1. Use las teclas de método abreviado: CMD + SHIFT + G – escriba en “/ Library /”

  2. Encuentra la carpeta JAVA

  3. Haga clic derecho en la carpeta de Java = Mover a la papelera (se requiere contraseña)

  4. Instalar: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Descargar Javascript SDK

  5. Asegúrese de que aparezca la nueva carpeta JAVA en / LIBRARY /
  6. Instalar Eclipse | Instalar Eclipse IDE para desarrolladores de Java
  7. Boom hecho