Come impostare o modificare la versione Java (JDK) predefinita su OS X?


781

Come puoi modificare la versione predefinita di Java su un mac?


2
cosa /usr/libexec/java_hometi dice l' esecuzione ?
Bart,

2
/ usr / libexec / java_home Returns /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat

Potrebbe essere che devi solo riavviare. Ci hai provato?
Bart,

Sì riavviato il computer e il terminale ... nessuna modifica.
Venkat,

3
Potresti per favore accettare la risposta molto votata da @markhellewell di seguito? Mi avrebbe aiutato a trovarlo un po 'più veloce ed è semplicemente bello. :)
Taytay,

Risposte:


1410

Prima esecuzione /usr/libexec/java_home -Vche produrrà qualcosa di simile al seguente:

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

Scegli la versione che vuoi impostare come predefinita ( 1.6.0_65-b14-462per amor di argomenti) quindi:

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

oppure puoi specificare solo la versione principale, come:

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

Ora quando corri java -versionvedrai:

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)

Aggiungi la export JAVA_HOME…linea al file init della tua shell.

Per Bash (come affermato da antonyh ):

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

Per i pesci (come dichiarato da ormurin)

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

2
@ MattO'Brien è qualcosa che dipende dalla shell che stai usando e dalla configurazione che hai in atto, quindi non posso dare una soluzione completa per questo ...
markhellewell

11
quelli sono davvero apici inversi la exportlinea
David West

6
Questo non ha funzionato per me. Prendi il percorso dall'esecuzione di java_home -V e aggiungilo al comando export, come questo export JAVA_HOME = "/ Sistema / Libreria / Java / JavaVirtualMachines / 1.6.0.jdk / Contenuto / Home"
oden,

68
Funziona in Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- nota anche, java_home consente corrispondenze parziali, quindi non devi includere la versione completa in quanto troverà l'ultima installata. Questo semplifica gli aggiornamenti.
antonyh,

15
Assicurati di utilizzare `` non '' per l'esportazione.
bufera di neve

410

Questa risposta è un tentativo di indirizzo: come controllare la versione java a livello di sistema (non solo nella shell attualmente in esecuzione) quando sono installate diverse versioni di JDK a scopo di sviluppo su macOS El Capitan o più recenti (Sierra, High Sierra, Mojave) . Per quanto ne so, nessuna delle risposte attuali lo fa (*).

Come sviluppatore, utilizzo diversi JDK e desidero passare facilmente dall'uno all'altro. Di solito ne ho l'ultima stabile per uso generale e altre per i test. Ma non voglio che il sistema (ad es. Quando avvio il mio IDE) usi l'ultima versione di "accesso anticipato" che ho per ora. Voglio controllare l'impostazione predefinita del sistema e dovrebbe essere l'ultima stabile.

L'approccio seguente funziona almeno con Java 7-12 (accesso anticipato al momento della stesura di questo documento), con Oracle JDK o OpenJDK (inclusi i build di AdoptOpenJDK prodotti dopo la metà di ottobre 2018 ).

Soluzione senza strumenti di terze parti:

  • lasciare tutti i JDK nella posizione predefinita, in /Library/Java/JavaVirtualMachines. Il sistema sceglierà la versione più alta per impostazione predefinita.
  • Per escludere un JDK dalla selezione di default, rinominalo Contents/Info.plistinInfo.plist.disabled . Quel JDK può ancora essere usato quando $JAVA_HOMEpunta ad esso, o fatto esplicitamente riferimento in uno script o in una configurazione. Sarà semplicemente ignorato dal javacomando di sistema .

Il programma di avvio del sistema utilizzerà JDK con la versione più alta tra quelle che dispongono di un Info.plistfile.

Quando lavori in una shell con JDK alternativo, scegli il tuo metodo tra le risposte esistenti ( jenvo alias / script personalizzati intorno /usr/libexec/java_home, ecc.).


Dettagli delle indagini in questo senso .


(*) Le risposte attuali sono obsolete (non sono più valide per macOS El Capitan o Sierra) o riguardano solo un singolo JDK o non trattano l'aspetto dell'intero sistema. Molti spiegano come cambiare $JAVA_HOME, ma questo influisce solo sulla shell corrente e su ciò che viene lanciato da lì. Non influirà su un'applicazione avviata dal programma di avvio del sistema operativo (a meno che non modifichi il file corretto e disconnetti / accedi, il che è noioso). Lo stesso per jenv, è fantastico e tutto, ma per quanto ne so, cambia semplicemente le variabili di ambiente, quindi ha lo stesso limite.


16
Questa è la risposta che stavo cercando, poiché jenvJAVA_HOMEsono in grado di impostare la versione java a livello di sistema, ovvero quella che Eclipse avrebbe usato.
Giovanni Lovato,

3
@Rodrigo Sì, come menzionato in "Dettagli dell'indagine" (linkato sopra): "Anche l'installazione di un JDK sovrascrive /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Apparentemente questo è quello che verrà lanciato il nuovo pannello Preferenze - questa è l'unica eccezione che ho trovato nella mia soluzione: quella continuerà a usare JDK9 (l'ultimo installato), ma nessun'altra applicazione Java lo fa. "
Hugues M.,

2
Vale la pena notare che le versioni java si trovano in / Library / Java / JavaVirtualMachines e che la soluzione di lavoro eccellente sopra menzionata si trova in quel contesto.
Andrew Kostka,

3
Esattamente, questa è la soluzione migliore e più funzionale per questa domanda. Sfortunatamente.
Aerodynamika,

3
Non posso ringraziarti abbastanza per questa risposta. Questo risolveva le applicazioni di avvio dal lanciatore del sistema operativo.
Karthic Raghupathi,

248

Aggiungendo le risposte di cui sopra, ho inserito le seguenti righe nel mio .bash_profile(o .zshrcper MacOS 10.15+), il che rende davvero comodo il passaggio (incluso il commento di @ elektromin per 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"

Dopo aver inserito, eseguire $ source .bash_profile

Posso passare a Java 8 digitando quanto segue:

$ 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)

5
Questa è la sintassi di Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin,

3
Alias ​​semplici fantastici per una rapida commutazione.
gbonetti,

L'uso alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"e la digitazione j10consentono di tornare alla versione corrente di Java (nel mio caso Java 10)
intagli

Vorrei creare uno strumento cli simile a quello nvmper cambiare versione Java, ma l'acronimo jvmsignifica già qualcos'altro :)
Andy,

Ottengo questo errore durante l'approvvigionamento: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11

56

Una piccola funzione di pesce basata su / 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

Se non usi il pesce, puoi fare qualcosa di simile in bash:

#!/bin/bash

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

Quindi per passare da un java all'altro:

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

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


1
questo cambia solo per la sessione terminale specifica. C'è un modo per aggiornarlo per cambiarlo a livello di sistema?
ENG618

1
Ho dovuto scrivere al export JAVA_HOME=(/usr/libexec/java_home $argv)posto della seconda riga della tua jhomefunzione.
Daniel AA Pelsmaeker,

32

È un po 'complicato, ma prova a seguire i passaggi descritti in Installazione di Java su OS X 10.9 (Mavericks) . Fondamentalmente, dovrai aggiornare il tuo alias a java.

Passo dopo passo:

Dopo aver installato JDK 1.7, dovrai fare ciò sudo ln -snfper cambiare il link in corrente java. Per fare ciò, aprire Terminale ed emettere il comando:

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

Si noti che la directory jdk1.7.0_51.jdkpotrebbe cambiare in base alla versione dell'SDK installata.

Ora, è necessario impostare il JAVA_HOMEpunto in cui è jdk_1.7.0_xx.jdkstato installato. Apri di nuovo il Terminale e digita:

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

Puoi aggiungere la export JAVA_HOMEriga sopra nel tuo .bashrcfile per avere java permanentemente nel tuo Terminale


1
come posso impostare la variabile JAVA_HOME? c'è un posto particolare in cui l'ho inserito?
Venkat,

dove sto esportando JAVA_HOME? e dove verrà salvato?
Venkat,

1
Ho aggiornato la risposta. Conosci la versione dell'SDK che hai installato? Il nome della cartella prende il numero di versione dell'SDK, quindi i comandi sopra potrebbero cambiare un po '.
Trein,

Ho installato l'ultimo, penso che sia 51.
Venkat,

La variabile JAVA_HOMEverrà esportata nella sessione Terminale corrente. Puoi aggiungerlo al nostro .bashrcse vuoi. Adatterò i comandi all'ultima versione.
Trein,

32

Utilizzare jenv è un modo semplice.

1.Installare jenv

    curl -s get.jenv.io | bash

2.Config jenv

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

3.Collega il percorso jdk

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

4. Siete pronti

comando switch:

jenv usa java 1.8

imposta default:

jenv default java 1.7


Soluzione pulita e piacevole.
pinturic,

Invece di "jenv use java 1.8", ho dovuto usare "jenv shell 1.8". "shell" potrebbe anche essere "globale" o "locale" a seconda delle necessità.
Steve Gelman,

1
jenv è bello quando funziona. Lo sconsiglio però, poiché non "modifica" realmente la versione java predefinita utilizzata, evidente eseguendo il comando "/ usr / libexec / java_home -V", solo JAVA_HOME. Ciò causa strani problemi con alcune applicazioni, ad esempio Eclipse.
Simon

Oltre a quella parte paranoidea di me suggerisce di non arricciare nulla per colpire. Anche se ritieni che il sito sia affidabile, nessuno può garantirti che non è hackerabile. Usa il gestore dei pacchetti del tuo sistema operativo.
Aleksandr Kravets il

Quelle informazioni sono obsolete. Controlla la documentazione ufficiale o istruzioni più dettagliate .
fabianopinto,

28

installa JDK, non solo JRE

/usr/libexec/java_home -v 1.8

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

Il prossimo

touch .bash_profile

open -a TextEdit.app .bash_profile

TextEdit ti mostrerà una pagina vuota che puoi compilare.

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

nel terminal:

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

prova il comando:

javac -version

dovrebbe produrre:

javac 1.8.0_111

26

tl; dr

Aggiungi la riga:

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

al file

~/.bash_profile

(sostituisci jdk1.8.0_144.jdk con la versione scaricata)

poi source ~/.bash_profile


22

Usa jenv, è come un gestore di ambiente Java. È super facile da usare e da pulire

Per Mac, seguire i passaggi:

brew install jenv

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

Installazione: se stai usando bash segui questi passaggi:

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l

Aggiungi le versioni desiderate di 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

Controlla le versioni installate:

jenv versions

Impostare la versione Java che si desidera utilizzare da:

jenv global oracle64-1.6.0

Questo ha funzionato perfettamente per me, grazie!
Fernando Gabrieli,

Sto usando uno strumento simile: sdkman.io/usage - IMHO approccio molto migliore rispetto agli alias manuali ecc.
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
}

mettere questo nel vostro ~ / .profile e utilizzarlo nel vostro terminale in questo modo setjdk 1.8, setjdk 1.7, setjdk 9etc etc ...

Se non lo hai, removeFromPathallora è:

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


12

Quattro semplici passaggi utilizzando il terminale per le persone che utilizzano il processo predefinito .. :)

  1. echo $JAVA_HOMEti dà java corrente a casa. Ad esempio:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ ti porterà nella cartella in cui normalmente installi jdks (potrebbe essere diverso per i tuoi computer)

  3. lsmostra le cartelle disponibili (normalmente avrà i numeri di versione, ad esempio jdk1.8.0_191.jdk openjdk-11.0.2.jdk:)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' cambierà la casa java ..

8

aggiungi il seguente comando al ~/.zshenvfile

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

8

macOS El Capitan o versioni successive sceglieranno la versione superiore del JDK disponibile in /Library/Java/JavaVirtualMachines, quindi per effettuare il downgrade è possibile rinominare il file Info.plistin qualcos'altro in Info.plist.disabledmodo tale che il sistema operativo sceglierà una versione precedente.


Il modo più semplice per (: Grazie
Satheesh Srinivasan,

6

Dalla pagina man ufficiale di java_home (1) di 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`

6

Se ancora non riesci a impostarlo. usando questo comando.

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

allora devi usare questo.

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

funzionerà sicuramente.


6

Per prima cosa scopri dove memorizzi le variabili d'ambiente-

  1. emacs
  2. bash_profile
  3. file zshrc

Passaggi per impostare la variabile d'ambiente: -

  1. Scarica il jdk da JAVA
  2. installalo con un doppio clic
  3. Ora imposta le variabili d'ambiente nel tuo file

    un. Per emacs.profile puoi usare questo link O vedi lo screenshot qui sotto

inserisci qui la descrizione dell'immagine

b. Per la configurazione del profilo 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)

Tutto pronto Ora puoi facilmente aggiornare o degradare la versione JAVA.


5

JDK Switch Script

Ho adattato la risposta da @Alex sopra e ho scritto quanto segue per correggere il codice per 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;
}

Passa 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)

Passa 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)

4

Puoi aggiungerlo al tuo .bash_profile per avere la versione impostata di default.

//Open bash profile
open ~/.bash_profile

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

// run bash profile
source ~/.bash_profile

Grazie! Cose da notare, è necessario includere i segni `. e ovviamente, sostituisci 1.8 con qualsiasi versione di cui potresti aver bisogno. Nel mio caso 13.0.2
Jamie S

3

Se stai usando il pesce e stai usando il mac e vuoi essere in grado di passare da un JDK all'altro, di seguito funziona per me sul mac.

La risposta di @ kenglxn non ha funzionato per me e ho capito che bcos non ha impostato -g che è globale!

Metti sotto in ~ / .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

Per sapere quale versione / versione secondaria hai installato, puoi fare:

/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

2

Se hai più versioni e vuoi eseguire qualcosa utilizzando una versione specifica, usa questo esempio:

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

2

Sulla base della risposta di @markhellewell ho creato un paio di funzioni alias che lo faranno per te. Basta aggiungerli al file di avvio della 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


2

Ecco come lo faccio sul mio Linux (Ubuntu / Mint Mate) , immagino che Mac possa farlo in modo simile.


Installa e config

passi:

  • [Base - parte]
  • Scarica jdk (il file .tgz ) a mano.
  • Decomprimere e rinominare correttamente, in una posizione corretta.
    per esempio /mnt/star/program/java/jdk-1.8
  • Crea un collegamento software, che verrà modificato per passare successivamente alla versione java.
    es. ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    Così /mnt/star/program/java/javaè il soft link.
  • Impostato JAVA_HOMEin uno script iniziale.
    Potrebbe usare il file come /etc/profile.d/eric.sh, o semplicemente usare ~/.bashrc.
    per esempioJAVA_HOME=/mnt/star/program/java/java
  • Quindi aprire una nuova shell bash. java -versiondovrebbe stampare la versione java.
  • [Altre versioni - parte]
  • Scarica e installa più versioni Java, se necessario, in modo simile ai passaggi precedenti.
    per esempio
    /mnt/star/program/java/jdk-11
  • [Switch - parte]
  • In ~/.bashrc, definire la variabile per varie versioni di Java.
    per esempio
    _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
  • In ~/.bashrc, definire il comando per cambiare la versione di Java.
    per esempio
    ## 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"
  • Nel terminale, source ~/.bashrcper rendere effettive le modifiche.
  • Quindi è possibile passare utilizzando i comandi definiti.

Comandi - da sopra config

comandi:

  • jv11
    Passa a Java 11
  • jv8
    Passa a Java 8
  • jvd
    Passa alla versione Java predefinita, che è indicata dalla _E_JAVA_HOME_Ddefinizione sopra.
  • jv
    Mostra la versione java.

Esempio di output:

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:~$ 

Meccanismo

  • Passa cambiando il soft link, che viene utilizzato come JAVA_HOME.

Suggerimenti

  • Sul mio computer quando installo jdk a mano, mantengo la versione minore, quindi creo un collegamento soft con la versione principale ma senza la versione secondaria.
    ad es.
    // questa è la directory effettiva,
    jdk1.8.0_191

    // questo è un soft link a jdk1.8.0_191
    jdk-8

    // questo è un collegamento soft a jdk-8ojdk-11
    java

  • Definisco l'alias di comando in ~/.bashrc, ma definisco la variabile in un file separato.
    Sto usando ~/.eric_varper definire le variabili e ~/.bashrcle fornirò (ad es source $HOME/.eric_var.).


1

Un modo semplice per includere un JDK installato separatamente nell'elenco fornito da /usr/libexec/java_home -Vè il collegamento simbolico alla directory come segue:

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

Ad esempio, per registrare il JDK incluso con Android Studio (1.8.0_152 al momento della scrittura), utilizzare:

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

Ora java_homeelencherò il JDK sotto Matching Java Virtual Machinese puoi selezionarlo come descritto sopra.


1

L'ho fatto per il terminale locale 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


-6

SOLUZIONE TROPPO FACILE: Che mal di testa - questa è stata una soluzione rapida e semplice che ha funzionato per me.

Mac OS Sierra versione 10.12.13

  1. Utilizzare i tasti di scelta rapida: CMD + MAIUSC + G - digitare "/ Libreria /"

  2. Trova la cartella JAVA

  3. Cartella Java clic destro = Sposta nel cestino (password obbligatoria)

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

  5. Assicurati che la nuova cartella JAVA sia visualizzata in / LIBRARY /
  6. Installa Eclipse | Installa IDE Eclipse per sviluppatori Java
  7. Boom Fatto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.