que - ¿Cómo configurar o cambiar la versión predeterminada de Java(JDK) en OS X?
oracle java (19)
JDK Switch Script
He adaptado la respuesta de @Alex anterior y escribí lo siguiente para corregir el código para Java 9.
$ cat ~/.jdk
#!/bin/bash
#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `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)
¿Cómo se puede cambiar la versión predeterminada de Java en un mac?
Agregando a las respuestas anteriores, coloco las siguientes líneas en mi .bash_profile
que hace que sea realmente 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)
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 - e.g. `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
DEMASIADA SOLUCIÓN: Qué dolor de cabeza: esta fue una solución fácil y rápida que me funcionó.
Mac OS Sierra versión 10.12.13
Utilice las teclas de método abreviado: CMD + MAYÚS + G - escriba "/ Library /"
Encuentra la carpeta JAVA
Haga clic derecho en la carpeta Java = Mover a la papelera (se requiere contraseña)
Instalar: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Descargar Javascript SDK
- Asegúrese de que la nueva carpeta JAVA aparezca en / BIBLIOTECA /
- Instalar Eclipse | Instalar Eclipse IDE para desarrolladores de Java
- Boom hecho
Desde la página man de 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`
Es un poco complicado, pero intente seguir los pasos descritos en Instalación de Java en OS X 10.9 (Mavericks) . Básicamente, tendrás que actualizar tu alias a java
.
Paso a paso:
Después de instalar JDK 1.7, necesitará hacer sudo ln -snf
para cambiar el enlace al java
actual. Para hacerlo, abre Terminal y ejecuta 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 de SDK que haya instalado.
Ahora, necesita configurar JAVA_HOME
para que apunte a donde se instaló jdk_1.7.0_xx.jdk
. Abre de nuevo la Terminal y escribe:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"
Puede agregar la línea de export JAVA_HOME
arriba en su archivo .bashrc
para tener java permanentemente en su Terminal
Esta herramienta hará el trabajo por usted:
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
Es un JavaOne simple que se puede usar para definir la versión actual de Java. La versión se puede utilizar en un shell que se abre después de seleccionar una versión en la herramienta.
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 más recientes (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. Por lo general, tengo la última versión estable para uso general y otras para pruebas. Pero no quiero que el sistema (por ejemplo, cuando inicie mi IDE) use la última versión de "acceso temprano" que tengo por ahora. Quiero controlar el valor predeterminado del sistema, y eso debería ser lo más estable posible.
El siguiente enfoque funciona con Java 7 a 12 al menos (acceso temprano al momento de escribir este artículo), con Oracle JDK o OpenJDK (incluidas las compilaciones realizadas por 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, bajo
/Library/Java/JavaVirtualMachines
. El sistema elegirá la versión más alta por defecto. - Para excluir un JDK de ser elegido de forma predeterminada, cambie el nombre de
Contents/Info.plist
aInfo.plist.disabled
. Ese JDK aún se puede usar cuando$JAVA_HOME
apunta, o se hace referencia explícita en un script o configuración. Simplemente será ignorado por el comandojava
del sistema.
El Info.plist
sistema utilizará el JDK con la versión más alta entre aquellos 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 alrededor de /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 general del sistema. Muchos explican cómo cambiar $JAVA_HOME
, pero esto solo afecta el shell actual y 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 la sesión / iniciar sesión, lo cual es tedioso). Lo mismo para jenv, es genial y todo, pero por lo que puedo decir, simplemente cambia las variables de entorno, por lo que tiene la misma limitación.
Primero averigüe dónde almacena las variables de entorno
- emacs
- bash_profile
- archivo zshrc
Pasos para configurar la variable de entorno: -
- Descarga el jdk desde java.
- instálalo haciendo doble clic
Ahora configura las variables de entorno en tu archivo.
a. Para emacs.profile puede usar este link O ver la captura de pantalla a continuación
segundo. Para la configuración del perfil ZSH -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
2. source ~/.zshrc - Restart zshrc to reflect the changes.
3. echo $JAVA_HOME - make sure path is set up properly
----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
4. java -version
--> java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
Todo listo Ahora puedes actualizar o degradar fácilmente la versión JAVA.
Primero ejecute /usr/libexec/java_home -V
que dará como resultado 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 1.6.0_65-b14-462
de 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 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)
Solo agregue la línea de export JAVA_HOME…
al archivo de inicio de su shell.
Si estás usando fish y estás usando mac y quieres poder cambiar entre JDK, entonces a continuación funciona para mí en mac.
La respuesta de @Kenglxn no me funcionó y me di cuenta de que bcos no establecía -g, ¡lo cual es global!
Colóquelo 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 tienes instalada, puedes 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
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
Si todavía no eres capaz de configurarlo. usando este comando
exportar JAVA_HOME = /usr/libexec/java_home -v 1.8
entonces tienes que usar este.
export JAVA_HOME = $(/usr/libexec/java_home -v 1.8)
seguramente funcionará.
Una función de pez pequeño 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 pescado, 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
}
Luego, para cambiar entre javas, haz:
$> jhome #switches to latest java
$> jhome -v 1.7 #switches to java 1.7
$> jhome -v 1.6 #switches to java 1.6
Usa jenv, es como un gestor de entorno Java. Es super facil de usar y limpio
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
Compruebe las versiones instaladas:
jenv versions
Establece la versión de Java que quieres usar de la siguiente manera:
jenv global oracle64-1.6.0
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.Enlazar la ruta jdk
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.7 ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.8
4. estas todo listo
comando de cambio:
jenv use java 1.8
establecer predeterminado:
jenv default java 1.7
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 a doc: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
en terminal:
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
intente el comando:
javac -version
debe dar salida:
javac 1.8.0_111
tl; dr
Añade 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.
entonces source ~/.bash_profile
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
}
ponga esto en su perfil ~ /. y utilícelo en su 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:?;;") }