Commutazione tra Java 7 e 8 in OS X


25

Ho installato Java-8. Ora volevo tornare a Java-7 di default, quindi scrivo ...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

Ma vedo ancora ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Questo funziona ...

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

Ma vorrei una soluzione più permanente.

Qualcuno vede cosa sto facendo di sbagliato?

Risposte:


50

Passa facilmente alle versioni

  1. Installa le versioni 1.6, 1.7, 1.8 in qualsiasi ordine. Nota: credo che l'ultimo installato determini quale verrà utilizzato per i plugin del browser, non mi preoccuperò di cambiare quelli di seguito.

  2. Quindi, aggiungi al tuo ~/.bashrco ~/.bash_profile, o dove mai:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Verifica la modifica tramite java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    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)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

Ovviamente il cambiamento è solo per la durata della shell. Ma ora puoi vedere dove puoi impostarlo a livello globale.


2
Un problema: JDK7 si rifiuta di installare se si dispone già di JDK8. Ti fa riferimento a un URL su oracle.com per ulteriori informazioni che ti danno un 404. E, naturalmente, le istruzioni di disinstallazione per JDK8 non funzionano affatto, quindi ora sono sostanzialmente perso.
Eric W,

1
basta usare jenv jenv.be
madzohan l'

9

Puoi usare jEnv ( http://www.jenv.be/ ), che è "uno strumento da riga di comando che ti aiuta a dimenticare come impostare la variabile d'ambiente JAVA_HOME per passare da una versione all'altra del JDK" (presa dalla homepage del progetto ).

Se hai familiarità con Ruby, JEnv è come usare RVM o rbenv. Ti aiuta a gestire diversi JDK diversi installati sul tuo computer senza dover scrivere il tuo script per passare da un JDK a un altro. È possibile modificare la versione java corrente in base ad esempio alla directory corrente o in base a un file di configurazione.


Puoi approfondire su questo? Sembra un commento, non una risposta.
Austin T, francese,

Se hai familiarità con Ruby è come usare RVM o rbenv per cambiare la versione java corrente in base, ad esempio, alla directory corrente o in base a un file di configurazione. Se vai alla home page di JENV c'è un buon tutorial.
Pietro Di Bello,

Questo post dovrebbe essere per tutti coloro che sono alla ricerca di risposte, quindi ci si aspetta che maggiori dettagli nel post siano considerati una risposta completa e buona.
Austin T, francese,

Ho aggiunto più informazioni e ampliato un po 'la risposta ... spero che ora appaia meglio. Grazie per il feedback.
Pietro Di Bello,

4

Non è possibile passare da una versione Java all'altra. Nella documentazione vedi:

È possibile installare un solo JRE alla volta. Il sistema non installerà un JRE con una versione inferiore rispetto alla versione corrente. Se si desidera installare una versione precedente di JRE, disinstallare innanzitutto la versione corrente.

Se si desidera tornare a una versione precedente, è necessario disinstallare Java 8.


grazie grrr ma questo non aiuta la mia opinione su OSX.
Jackie,

4
@Jackie: In realtà questo ha poco a che fare con OS X ma più con Oracle. Ai tempi in cui Apple manteneva JDK per OS X, era perfettamente e facile passare da una versione Java attiva all'altra. Si prega di incolpare Oracle per il loro installer schifoso e non per OS X.
Alessandro Vermeulen,

@AlessandroVermeulen con tutto il rispetto non è il diavolo "installer" Vorrei che non venisse con un periodo preinstallato come le mie scatole di Linux. Quindi ho potuto "installarlo" come volevo con il binario unix. E poi c'erano le versioni precedenti di OSX in cui era persino richiesto l'avvio. IMHO sono assolutamente le convenzioni utilizzate in OSX che causano il problema.
Jackie,

4
Ci sono più JDK installati correttamente sulla mia macchina, è il plugin delle preferenze di Oracles che non consente il passaggio da 1.8 a 1.7, dalla riga di comando con un percorso completo che funzionano tutti con successo. / usr / libexec / java_home -V li elenca tutti - e il riquadro delle preferenze Java 7 ha permesso la scelta dei JRE Java 7
user151019,

0

Voglio integrare la risposta di @ nkadwa. Il suo suggerimento ha funzionato, ma solo dopo aver cambiato anche il collegamento simbolico per CurrentSDK. Quindi ecco il codice modificato:

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
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.