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

781

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

Venkat
fuente
2
¿Qué te dice la ejecución /usr/libexec/java_home?
Bart
2
/ usr / libexec / java_home devuelve /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat
Podría ser que solo necesites reiniciar. ¿Has intentado eso?
Bart
Sí, reinició la computadora y el terminal ... sin cambios.
Venkat
3
¿Podría aceptar la respuesta altamente votada de @markhellewell a continuación? Me habría ayudado a encontrarlo un poco más rápido, y es simplemente agradable. :)
Taytay

Respuestas:

1410

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 corras 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 (según lo indicado por antonyh ):

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

Para pescado (según lo establecido por ormurin)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)
Markhellewell
fuente
2
@ MattO'Brien es algo que depende del shell que esté usando y de la configuración que tenga, así que no puedo dar una solución completa para eso ...
markhellewell
11
Realmente son los acentos abiertos en la exportlínea
David West
66
Esto no funcionó para mí. Agarrar el camino de correr inicio_java -V y añadir al comando de exportación, como este export JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contenidos / Inicio"
Oden
68
Esto funciona en Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)también tenga en cuenta que java_home permite coincidencias parciales para que no tenga que incluir la versión completa, ya que encontrará la última instalada. Esto facilita las actualizaciones.
antonyh
15
Asegúrese de estar usando `` no '' para la exportación.
tormenta de nieve el
410

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 está ejecutando actualmente) cuando se instalan varias versiones de JDK para 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 fácilmente de uno a otro. Por lo general, tengo el último estable para uso general, y otros para pruebas. Pero no quiero que el sistema (por ejemplo, cuando inicio 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 último estable.

El siguiente enfoque funciona con Java 7 a 12 al menos (acceso temprano 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, debajo /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 Contents/Info.plistaInfo.plist.disabled . Ese JDK todavía se puede usar cuando $JAVA_HOMEapunta a él, o se hace referencia explícita en un script o configuración. Simplemente será ignorado por el javacomando 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), 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 el 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 la sesión / inicio de 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.

Hugues M.
fuente
16
Esta es la respuesta que estaba buscando, ya que jenvtampoco JAVA_HOMEpuedo configurar la versión Java de todo el sistema, es decir, la que usaría Eclipse.
Giovanni Lovato
3
@Rodrigo Sí, como se menciona en "Detalles de la investigación" (vinculado anteriormente): "Instalar un JDK también sobrescribe /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Aparentemente este es el que lanzará el nuevo panel de Preferencias; esta es la única excepción que encontré para mi solución: que thingy seguirá usando JDK9 (la última que instalé), pero ninguna otra aplicación Java lo hace ".
Hugues M.
2
Vale la pena señalar que las versiones de Java se encuentran en / Library / Java / JavaVirtualMachines, y que la excelente solución de trabajo anterior se encuentra dentro de ese contexto.
Andrew Kostka
3
Exactamente, esta es la mejor y la solución más funcional para esta pregunta. Lamentablemente sí.
Aerodynamika
3
No puedo agradecerles lo suficiente por esta respuesta. Esto corrigió el lanzamiento de aplicaciones desde el iniciador del sistema operativo.
Karthic Raghupathi
248

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 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
fuente
55
Esta es la sintaxis para Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin
3
Alias ​​simples impresionantes para un cambio rápido.
gbonetti
Usar alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"y luego escribir le j10permite volver a la versión actual de Java (en mi caso, Java 10)
intagli
Haría una herramienta cli similar a la nvmde cambiar las versiones de Java, pero el acrónimo jvmya significa algo más :)
Andy
Recibo este error al /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
buscar
56

Una función de peces pequeños 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 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

kenglxn
fuente
1
esto solo cambia para la sesión terminal específica. ¿Hay alguna manera de actualizar esto para cambiarlo en todo el sistema?
ENG618
1
Tuve que escribir en export JAVA_HOME=(/usr/libexec/java_home $argv)lugar de la segunda línea de su jhomefunción.
Daniel AA Pelsmaeker
32

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 java.

Paso a paso:

Después de instalar JDK 1.7, deberá hacer esto sudo ln -snfpara cambiar el enlace a actual java. 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.jdkpuede cambiar según la versión del SDK que haya instalado.

Ahora, debe configurar JAVA_HOMEpara señalar dónde jdk_1.7.0_xx.jdkse instaló. Abra nuevamente la Terminal y escriba:

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

Puede agregar la export JAVA_HOMElínea de arriba en su .bashrcarchivo para tener Java permanentemente en su Terminal

Trein
fuente
1
¿Cómo configuro la variable JAVA_HOME? ¿hay un lugar en particular donde lo coloque?
Venkat
¿Dónde estoy exportando JAVA_HOME? ¿Y dónde se guardará eso?
Venkat
1
He actualizado la respuesta. ¿Conoces la versión del SDK que has instalado? El nombre de la carpeta toma el número de versión del SDK, por lo que los comandos anteriores pueden cambiar un poco.
Trein
Instalé el último, creo que es 51.
Venkat
La variable JAVA_HOMEse exportará en la sesión actual de Terminal. Puede agregarlo a nuestro .bashrcsi lo desea. Adaptaré los comandos a la última versión.
Trein
32

Usar jenv es una manera fácil.

1.Instalar jenv

    curl -s get.jenv.io | golpetazo

2.Config jenv

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

3.Symlink la ruta jdk

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

4.Estás listo

comando de cambio:

jenv use java 1.8

establecer predeterminado:

jenv default java 1.7

Yuantao
fuente
Solución limpia y agradable.
pinturic
En lugar de "jenv use java 1.8", tuve que usar "jenv shell 1.8". "shell" también podría ser "global" o "local" dependiendo de la necesidad.
Steve Gelman
1
Jenv es agradable cuando funciona. Sin embargo, lo recomendaría, ya que "realmente" no cambia la versión predeterminada de Java utilizada, evidente al ejecutar el comando "/ usr / libexec / java_home -V", solo JAVA_HOME. Esto causa problemas extraños con algunas aplicaciones, por ejemplo, Eclipse.
Simon
Además de eso, mi parte paranoica sugiere no hacer nada para golpear. Incluso si crees que el sitio es confiable, nadie puede garantizar que sea pirateable. Use el administrador de paquetes de su sistema operativo.
Aleksandr Kravets
Esa información está desactualizada. Consulte la documentación oficial o instrucciones más detalladas .
fabianopinto
28

instalar 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 terminal:

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

prueba el comando:

javac -version

debería dar salida:

javac 1.8.0_111
usuario2708060
fuente
26

tl; dr

Agrega la línea:

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

al archivo

~/.bash_profile

(reemplace jdk1.8.0_144.jdk con su versión descargada)

entonces source ~/.bash_profile

dustinevan
fuente
22

Use jenv, es como un administrador de entorno 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

Configure la versión de Java que desea usar:

jenv global oracle64-1.6.0
slal
fuente
Esto funcionó perfecto para mí, gracias!
Fernando Gabrieli
Estoy usando una herramienta similar: sdkman.io/usage - En mi humilde opinión enfoque mucho mejor que los alias manuales, etc.
SathOkh
12
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
}

poner esto en su ~ / .profile y usarlo en su terminal como tal setjdk 1.8, setjdk 1.7, setjdk 9etc, etc ...

Si no tienes, removeFromPathentonces es:

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

Gabriel Reiser
fuente
12

Cuatro sencillos pasos para usar la terminal para las personas que usan el proceso predeterminado .. :)

  1. echo $JAVA_HOMEte da el hogar actual de java. Por ejemplo:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ lo llevará a la carpeta donde normalmente instala jdks (puede ser diferente para sus máquinas)

  3. lsaparecen las carpetas disponibles (normalmente tendrá los números de versión, por ejemplo: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' cambiará la casa de Java ..
Abbin Varghese
fuente
8

agregue el siguiente comando al ~/.zshenvarchivo

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 
xsilen T
fuente
8

macOS El Capitan o una versión más reciente elegirán la versión superior del JDK disponible /Library/Java/JavaVirtualMachines, por lo que para cambiar la versión anterior, puede cambiar el nombre del archivo Info.plista otra cosa Info.plist.disabledpara que el sistema operativo elija una versión anterior.

Joaquín L. Robles
fuente
La forma más fácil de (: Gracias
Satheesh Srinivasan
6

Desde la página de comando man oficial java_home (1) 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`
Antonio
fuente
6

Si aún no puede configurarlo. utilizando este comando

export 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á.

RohitKumar
fuente
6

Primero averigüe dónde almacena las variables de entorno.

  1. emacs
  2. bash_profile
  3. archivo zshrc

Pasos para configurar la variable de entorno: -

  1. Descarga el jdk de JAVA
  2. instalarlo haciendo doble clic
  3. Ahora configure las variables de entorno en su archivo

    a. Para emacs.profile puede usar este enlace O ver la captura de pantalla a continuación

ingrese la descripción de la imagen aquí

si. 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 puede actualizar o degradar fácilmente la versión JAVA.

Vrushali Raut
fuente
5

Script de cambio JDK

He adaptado la respuesta de @Alex arriba y escribí lo siguiente para arreglar 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)
Marcello de Sales
fuente
4

Puede agregarlo a su .bash_profile para configurar la versión de manera predeterminada.

//Open bash profile
open ~/.bash_profile

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

// run bash profile
source ~/.bash_profile
Amin Agha
fuente
¡Gracias! Aspectos a tener en cuenta, debe incluir las marcas `. y obviamente, reemplace 1.8 con cualquier versión que pueda necesitar. En mi caso 13.0.2
Jamie S
3

Si está utilizando fish y está utilizando mac y desea poder cambiar entre JDK, a continuación me funciona en mac.

La respuesta de @ kenglxn no funcionó para mí y descubrí que bcos no estableció -g, ¡que es global!

Ponga 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 ha instalado, 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
Gob00st
fuente
2

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

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

Basado en la respuesta de @markhellewell, creé un par de funciones de alias que lo harán por usted. Simplemente agréguelos a su 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

Alex
fuente
2

Así es como lo hago en mi Linux (Ubuntu / Mint mate) , supongo que Mac puede hacerlo de manera similar.


Instalar y configurar

Pasos:

  • [Básico - parte]
  • Descargar jdk (el archivo .tgz ) a mano.
  • Descomprima y cambie el nombre correctamente, en una ubicación adecuada.
    p.ej /mnt/star/program/java/jdk-1.8
  • Haga un enlace suave, que se cambiará para cambiar la versión de Java más adelante. Por
    ejemplo, ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    así /mnt/star/program/java/javaes el enlace suave.
  • Establecer JAVA_HOMEen un script de inicio.
    Podría usar un archivo como /etc/profile.d/eric.sh, o simplemente usar ~/.bashrc.
    p.ejJAVA_HOME=/mnt/star/program/java/java
  • Luego abra un nuevo bash shell. java -versiondebería imprimir la versión de java.
  • [Más versión - parte]
  • Descargue e instale más versiones de Java, según sea necesario, similar a los pasos anteriores.
    p.ej
    /mnt/star/program/java/jdk-11
  • [Interruptor - parte]
  • En ~/.bashrc, definir variable para varias versiones de Java.
    p.ej
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # dir of default version,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • En ~/.bashrc, defina el comando para cambiar la versión de Java.
    p.ej
    ## switch java version,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # default java version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • En la terminal, source ~/.bashrc para que los cambios surtan efecto.
  • Luego podría cambiar usando los comandos definidos.

Comandos: desde la configuración anterior

Comandos:

  • jv11
    Cambiar a Java 11
  • jv8
    Cambiar a Java 8
  • jvd
    Cambie a la versión predeterminada de Java, que se indica mediante la _E_JAVA_HOME_Ddefinición anterior.
  • jv
    Mostrar versión java.

Salida de ejemplo:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
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)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

Mecanismo

  • Cambia cambiando el enlace suave, que se utiliza como JAVA_HOME.

Consejos

  • En mi máquina cuando instalo jdk a mano, mantengo la versión menor, luego hago un enlace suave con la versión principal pero sin la versión menor.
    por ejemplo,
    // este es el directorio real,
    jdk1.8.0_191

    // este es un enlace suave a jdk1.8.0_191
    jdk-8

    // este es un enlace suave a jdk-8ojdk-11
    java

  • Defino el alias de comando en ~/.bashrc, pero defino la variable en un archivo separado.
    Estoy usando ~/.eric_varpara definir las variables, y ~/.bashrclo fuente (por ejemplo source $HOME/.eric_var).

Eric Wang
fuente
1

Una manera fácil de incluir un JDK instalado por separado en la lista dada por /usr/libexec/java_home -Ves vincular el directorio de la siguiente manera:

sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk

Por ejemplo, para registrar el JDK incluido con Android Studio (1.8.0_152 en el momento de la escritura), use:

sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk

Ahora java_homeenumerará el JDK debajo Matching Java Virtual Machinesy puede seleccionarlo como se describe anteriormente.

Friederbluemle
fuente
1

Lo he hecho para la terminal local con

export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)

alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'

export JAVA_HOME=$JAVA_13_HOME
Trackhe
fuente
-6

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

Mac OS Sierra versión 10.12.13

  1. Use las teclas de acceso directo: CMD + MAYÚS + G - escriba "/ Library /"

  2. Encuentra la carpeta JAVA

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

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

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