¿Cómo configurar o cambiar la versión predeterminada de Java (JDK) en macOS?

Resuelto Venkat asked hace 10 años • 0 respuestas

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

Venkat avatar Feb 23 '14 12:02 Venkat
Aceptado

Primera ejecución /usr/libexec/java_home -Vque 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-462por el bien de los 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 ejecutes java -versionverás:

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)

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

Para Bash (como lo indica antonyh ):

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

Para pescado (según lo indicado por ormurin)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)

La actualización del archivo .zshrc debería funcionar:

nano ~/.zshrc

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

Presione CTRL+X para salir del editor Presione Y para guardar los cambios

source ~/.zshrc
echo $JAVA_HOME
java -version
markhellewell avatar Jul 09 '2014 15:07 markhellewell

Esta respuesta es un intento de abordar: cómo controlar la versión de Java en todo el sistema (no solo en el shell que se ejecuta actualmente) cuando se instalan varias versiones de JDK con fines de desarrollo en macOS El Capitan o posterior (Sierra, High Sierra, Mojave) . 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. Normalmente tengo el último estable para uso general y otros para pruebas. Pero no quiero que el sistema (por ejemplo, cuando inicio mi IDE) utilice la última versión de "acceso anticipado" que tengo por ahora. Quiero controlar el valor predeterminado del sistema, y ​​debería ser el último estable.

El siguiente enfoque funciona al menos con Java 7 a 12 (acceso anticipado al momento de escribir este artículo), con Oracle JDK u OpenJDK (incluidas las compilaciones de AdoptOpenJDK producidas después de mediados de octubre de 2018 ).

Solución sin herramientas de terceros:

  • Deje todos los JDK en su ubicación predeterminada, en /Library/Java/JavaVirtualMachines. El sistema elegirá la versión más alta de forma predeterminada.
  • Para excluir un JDK de la selección predeterminada, cámbiele el nombre Contents/Info.plistaInfo.plist.disabled . Ese JDK aún se puede usar cuando $JAVA_HOMEapunta a él o se puede hacer referencia explícita a él en un script o configuración. Simplemente será ignorado por javael comando del sistema.

El iniciador del sistema utilizará el JDK con la versión más alta entre los que tienen un Info.plistarchivo.

Cuando trabaje en un shell con JDK alternativo, elija su método entre las respuestas existentes ( jenvo alias/scripts personalizados /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), solo abordan un único JDK o no abordan el aspecto de todo el sistema. Muchos explican cómo cambiar $JAVA_HOME, pero esto sólo afecta al shell actual y a lo que se inicia desde allí. No afectará a una aplicación iniciada desde el iniciador del sistema operativo (a menos que cambie el archivo correcto y cierre sesión/inicie sesión, lo cual es tedioso). Lo mismo ocurre con jenv, es genial y todo, pero hasta donde sé, simplemente cambia las variables de entorno, por lo que tiene la misma limitación.

Hugues M. avatar May 24 '2017 22:05 Hugues M.

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

alias j20="export JAVA_HOME=`/usr/libexec/java_home -v 20`; java -version"
alias j19="export JAVA_HOME=`/usr/libexec/java_home -v 19`; java -version"
alias j18="export JAVA_HOME=`/usr/libexec/java_home -v 18`; java -version"
alias j17="export JAVA_HOME=`/usr/libexec/java_home -v 17`; java -version"
alias j16="export JAVA_HOME=`/usr/libexec/java_home -v 16`; java -version"
alias j15="export JAVA_HOME=`/usr/libexec/java_home -v 15`; java -version"
alias j14="export JAVA_HOME=`/usr/libexec/java_home -v 14`; java -version"
alias j13="export JAVA_HOME=`/usr/libexec/java_home -v 13`; java -version"
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, ejecutar$ 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)
Justin Zhang avatar Nov 23 '2016 01:11 Justin Zhang

Usar jenv es una manera fácil. (Actualización 2022)

  1. Instale jenv: consulte Primeros pasos

  2. Instalar java con cerveza

    brew install openjdk@11
    ln -s /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
    
    #other java
    brew install openjdk@8
    brew install openjdk@17
    
  3. Agregar java a jenv

    jenv add /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
    
  4. Uso: consulte jenv

Yuantao avatar May 29 '2015 04:05 Yuantao

instalar JDK, no solo JRE

/usr/libexec/java_home -v 1.8

da

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

próximo

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 terminales:

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

prueba el comando:

javac -version

debería generar:

javac 1.8.0_111
user2708060 avatar Oct 31 '2016 13:10 user2708060