Wechseln zwischen Java 7 und 8 in OS X

25

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

Ich hätte aber gerne eine dauerhaftere Lösung.

Weiß jemand, was ich falsch mache?

Jackie
quelle

Antworten:

50

Versionen einfach wechseln

  1. Installieren Sie die Versionen 1.6, 1.7, 1.8 in beliebiger Reihenfolge. Hinweis: Ich glaube, dass die zuletzt installierte Version bestimmt, welche für Browser-Plugins verwendet wird. Es ist mir egal, ob ich diese unten ändere.

  2. Fügen Sie dann zu Ihrem ~/.bashrcoder ~/.bash_profileoder wo auch immer hinzu:

    #!/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 Sie können sehen, wo Sie es jetzt global einstellen können.

nkadwa
quelle
2
Ein Problem: JDK7 lässt sich nicht installieren, wenn Sie bereits über JDK8 verfügen. Es verweist Sie auf eine URL auf oracle.com, um weitere Informationen zu erhalten, die Ihnen einen 404- Wert geben. Und natürlich funktionieren die Deinstallationsanweisungen für JDK8 überhaupt nicht, so dass ich jetzt im Grunde verloren bin.
Eric W
1
benutze einfach jenv jenv.be
madzohan
9

Sie können jEnv ( http://www.jenv.be/ ) verwenden, ein Befehlszeilentool, mit dem Sie vergessen, wie Sie die Umgebungsvariable JAVA_HOME so einstellen, dass zwischen verschiedenen Versionen des JDK umgeschaltet wird (entnommen von der Projekthomepage) ).

Wenn Sie mit Ruby vertraut sind, ähnelt JEnv der Verwendung von RVM oder rbenv. Sie können damit mehrere verschiedene JDKs verwalten, die auf Ihrem Computer installiert sind, ohne ein eigenes Skript schreiben zu müssen, um von einem JDK zum anderen zu wechseln. Sie können die aktuelle Java-Version beispielsweise basierend auf dem aktuellen Verzeichnis oder basierend auf einer Konfigurationsdatei ändern.

Pietro Di Bello
quelle
Können Sie das näher erläutern? Dies sieht aus wie ein Kommentar, keine Antwort.
Austin T Französisch
Wenn Sie mit Ruby vertraut sind, verwenden Sie RVM oder rbenv, um die aktuelle Java-Version zu ändern, beispielsweise basierend auf dem aktuellen Verzeichnis oder basierend auf einer Konfigurationsdatei. Wenn Sie zur JENV-Homepage gehen, gibt es ein gutes Tutorial.
Pietro Di Bello
Dieser Beitrag sollte für alle gedacht sein, die nach Antworten suchen. Daher wird erwartet, dass mehr Details in diesem Beitrag als vollständige und gute Antwort betrachtet werden.
Austin T French
Ich habe mehr Infos hinzugefügt und die Antwort etwas erweitert ... hoffe, das sieht jetzt besser aus. Danke für die Rückmeldung.
Pietro Di Bello
4

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

Es kann immer nur eine JRE installiert werden. Das System installiert keine JRE mit einer niedrigeren Version als der aktuellen Version. 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 Java 8 deinstallieren .

Christian Wörz
quelle
grrr danke aber das hilft meiner meinung von OSX nicht.
Jackie
4
@Jackie: Eigentlich hat das wenig mit OS X zu tun, sondern mehr mit Oracle. Als Apple das JDK für OS X pflegte, war es perfekt und einfach, zwischen aktiven Java-Versionen zu wechseln. Bitte beschuldigen Sie Oracle für ihren beschissenen Installer und nicht für OS X.
Alessandro Vermeulen
@AlessandroVermeulen mit allem Respekt, es ist nicht der "Installer", zum Teufel, ich wünschte, es wäre nicht mit einer vorinstallierten Version wie meine Linux-Boxen gekommen. Dann könnte ich es "installieren", wie ich es mit der Unix-Binärdatei wollte. Und dann gab es die älteren Versionen von OSX, bei denen es sogar erforderlich war, zu booten. IMHO ist es absolut die Konventionen in OSX, die das Problem verursachen.
Jackie
4
Es sind mehrere JDKs korrekt auf meinem Computer installiert. Dies ist das von Oracles bevorzugte Plugin, das das Umschalten von 1.8 auf 1.7 über die Befehlszeile mit vollem Pfad nicht zulässt. Alle funktionieren erfolgreich. / usr / libexec / java_home -V listet alle auf - und der Java 7-Einstellungsbereich ermöglichte die Auswahl der Java 7-JREs
user151019
0

Ich möchte @ nkadwas Antwort ergänzen. Sein Vorschlag hat funktioniert, aber erst nachdem auch der Symlink für CurrentSDK geändert wurde. Also hier ist der geänderte 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
imdahmd
quelle