Umschalten zwischen Java 7 und 8 in OS X

Ich habe Java-8 installiert. Jetzt wollte ich standardmäßig zu Java-7 zurückkehren, also tippe ich ein...

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

Aber ich sehe immer noch...

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)

Das funktioniert...

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

Aber ich möchte eine dauerhaftere Lösung.

Kann jemand sehen, was ich falsch mache?

Author: Scott, 2013-09-25

4 answers

Einfach wechseln Versionen

  1. Installieren Sie die Versionen 1.6, 1.7, 1.8 in beliebiger Reihenfolge. Hinweis: Ich glaube, die letzte installierte bestimmt, welche für Browser-Plugins verwendet wird, ich werde mich nicht darum kümmern, diese unten zu ändern.

  2. Dann füge zu deinem ~/.bashrc oder ~/.bash_profile hinzu oder wo immer:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Überprüfen Sie die änderung über 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)
    

Offensichtlich ist die Änderung nur für die Dauer der Shell. Aber du kannst sehen Sie, wo Sie es jetzt global einstellen können.

 51
Author: nkadwa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-07-28 00:42:25

Sie können jEnv (http://www.jenv.be/), das "ein Befehlszeilentool ist, mit dem Sie vergessen können, wie Sie die Umgebungsvariable JAVA_HOME so einstellen, dass sie zwischen verschiedenen Versionen des JDK wechseln" (auf der Homepage des Projekts).

Wenn Sie mit Ruby vertraut sind, ist JEnv wie RVM oder rbenv. Es hilft Ihnen, mehrere verschiedene auf Ihrem Computer installierte JDKs zu verarbeiten, ohne ein eigenes Skript schreiben zu müssen, um von einem JDK zu einem anderen zu wechseln. Sie können die aktuelle Java-Version ändern basierend zum Beispiel auf dem aktuellen Verzeichnis oder basierend auf einer Konfigurationsdatei.

 9
Author: Pietro Di Bello,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-05-13 20:51:25

Sie können nicht zwischen Java-Versionen wechseln. In der Dokumentation sehen Sie:

Es kann jeweils nur eine JRE installiert werden. Das System installiert keine JRE, die eine niedrigere Version als die aktuelle Version hat. Wenn Sie eine niedrigere Version der JRE installieren möchten, deinstallieren Sie zuerst die aktuelle Version.

Wenn Sie zu einer älteren Version zurückkehren möchten, müssen Sie deinstallieren Java 8.

 4
Author: Christian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-09-25 20:42:00

Ich möchte @nkadwas Antwort ergänzen. Sein Vorschlag funktionierte, aber erst nachdem auch der Symlink für CurrentSDK geändert wurde. So, hier ist der modifizierte code:

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
 0
Author: imdahmd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-06-18 10:16:32