wake-up-neo.com

Mac OS X und mehrere Java-Versionen

Wie kann ich ein zusätzliches Java auf MacOS installieren? Ich habe jdk8 installiert und das funktioniert gut. aber jetzt brauche ich eine jdk7-installation für entwicklungszwecke. Beim Versuch, die alte Version über eine DMG-Datei zu installieren, wird eine Warnung angezeigt, dass bereits eine neuere Version von Java installiert ist und der Installer beendet wird. 

/usr/libexec/Java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

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

Wie installiere ich jdk7 zusätzlich zu diesem?

Vielen Dank
Dakky

221
Dakkar

Die sauberste Methode zum Verwalten mehrerer Java-Versionen auf dem Mac ist die Verwendung von Homebrew .

Und innerhalb von Homebrew verwenden Sie:

  • homebrew-cask, um die Java-Versionen zu installieren
  • jenv zum Verwalten der installierten Java-Versionen

Wie auf http://hanxue-it.blogspot.ch/2014/05/installing-Java-8-managing-multiple.html zu sehen ist, sind diese Schritte zu befolgen.

  1. homebrew installieren
  2. installieren Sie Homebrew Jenv
  3. homebrew-Fass installieren
  4. eine bestimmte Java-Version mit Fass installieren (siehe Abschnitt "Homebrew-Fass-Versionen" unten)
  5. fügen Sie diese Version für jenv hinzu, um sie zu verwalten
  6. Überprüfen Sie, ob die Version von Jenv korrekt verwaltet wird
  7. wiederholen Sie die Schritte 4 bis 6 für jede Java-Version, die Sie benötigen

homebrew-Fass-Versionen

Fügen Sie den homebrew/cask-versions tap zur Homebrew hinzu:

brew tap homebrew/cask-versions

Dann können Sie sich alle verfügbaren Versionen ansehen:

brew search Java

Dann können Sie die Version (en) installieren, die Sie möchten:

brew cask install Java7
brew cask install Java6

Und fügen Sie sie hinzu, um wie üblich von Jenv verwaltet zu werden.

jenv add <javaVersionPathHere>

Ich denke, das ist der sauberste und einfachste Weg, um das zu erreichen.


Ein weiterer wichtiger Hinweis ist zu beachten, wie unter Mac OS X 10.6.7. Java Path. Aktuelles JDK verwirrend :

Für verschiedene Arten von JDKs oder Installationen gibt es unterschiedliche Pfade

Sie können die Pfade der installierten Versionen mit /usr/libexec/Java_home -V überprüfen. Siehe Wie überprüfe ich, ob das Java-JDK auf einem Mac installiert ist?

Unter Mac OS X Mavericks fand ich Folgendes:

1) Integrierter JRE-Standard: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) Von Apple heruntergeladene JDKs: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) Von Oracle heruntergeladene JDKs: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


Ressourcen

356
Adrien Be

Deinstallieren Sie jdk8, installieren Sie jdk7 und installieren Sie dann jdk8 erneut.

Mein Ansatz zum Wechseln zwischen ihnen (in .profile):

export Java_7_HOME=$(/usr/libexec/Java_home -v1.7)
export Java_8_HOME=$(/usr/libexec/Java_home -v1.8)
export Java_9_HOME=$(/usr/libexec/Java_home -v9)

alias Java7='export Java_HOME=$Java_7_HOME'
alias Java8='export Java_HOME=$Java_8_HOME'
alias Java9='export Java_HOME=$Java_9_HOME'

#default Java8
export Java_HOME=$Java_8_HOME

Dann können Sie einfach Java7 oder Java8 in ein Terminal eingeben, um die Version zu wechseln.

(Bearbeiten: aktualisiert, um Dylans-Verbesserung für Java 9 hinzuzufügen)

227
Vegard

Für macOS Sierra 420

Dieser Leitfaden wurde aus verschiedenen Quellen zusammengestellt (Antworten oben sowie andere Beiträge) und funktioniert einwandfrei.

0. Falls noch nicht geschehen, installieren Sie Homebrew.

Siehe https://brew.sh/

1. Installieren Sie Jenv

brew install jenv

2. Fügen Sie jenv zum bash-Profil hinzu

if which jenv > /dev/null; then eval "$(jenv init -)"; fi

3. Fügen Sie jenv zu Ihrem Pfad hinzu

export PATH="$HOME/.jenv/shims:$PATH"

4. Tippen Sie auf "Abstellraum/Versionen".

Zu Ihrer Information: "Tap" erweitert die Liste der verfügbaren Repos, die von Brew installiert werden können, über die Standardliste der verfügbaren Repos.

brew tap caskroom/versions

5. Installieren Sie die neueste Version von Java

brew cask install Java

6. Installieren Sie Java 6 (oder 7 oder 8, was immer Sie benötigen).

brew cask install Java6
#brew cask install Java7
#brew cask install Java8

? Schließen Sie das Terminal und starten Sie es neu, damit es alle neuen ENV-Vars sieht, die eingerichtet wurden.

7. Überprüfen Sie die Installationen

Alle Java-Versionen werden hier installiert: /Library/Java/JavaVirtualMachines lasst uns einen Blick darauf werfen.

ls -la /Library/Java/JavaVirtualMachines

8. Fügen Sie jeden Pfad einzeln zu jenv hinzu.

Wir müssen dem Versionsordner "/ Contents/Home" hinzufügen . WARNUNG: Verwenden Sie die tatsächlichen Pfade auf Ihrem Computer. Dies sind nur EXAMPLE

jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home

9. Prüfen Sie, ob Jenv registriert ist

jenv versions

10. Java-Version für die Verwendung festlegen (global)

Dabei entspricht XX einem der Elemente in der obigen Versionsliste.

jenv global XX

Überprüfen Sie die Java-Version

Java -version

Überprüfen Sie die Versionen von Jenv

Sollte auch die aktuelle Version angeben, die mit einem Sternchen verwendet wird.

jenv versions

ERLEDIGT


Schnelle zukünftige Referenz

So ändern Sie die Java-Version 

... Siehe die Liste der verfügbaren Java-Versionen

jenv versions

... dann, wo XX einem Element in der obigen Liste entspricht

jenv global XX
66
bob

SDKMAN! ist ein hervorragendes Tool für die Verwendung mehrerer Versionen von Java, Gradle, Groovy, Kotlin und anderen JVM-Tools unter Mac OS. Installations- und Verwendungsdokumente befinden sich auf der Hauptsite.

(Ich habe keine Zugehörigkeit, nur einen glücklichen Benutzer).

Wenn Sie als Beispiel in einem Terminalfenster Folgendes eingeben, wird eine Liste der verfügbaren Java SDK-Versionen angezeigt (aus Gründen der Kürze bearbeitet):

$ sdk list Java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

Hier gibt + an, dass die Version installiert ist. > gibt an, welche Version gerade verwendet wird. So installieren Sie eine Version:

$ sdk install Java 7u141-zulu

So verwenden Sie eine Version in diesem Terminalfenster:

$ sdk use Java 9ea170
32
Michael Easter

Wie auf dieser Website gefunden Beginnen wir mit der Installation von jEnv

  1. Führen Sie dies im Terminal aus

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
    
  2. Fügen Sie dem bash-Profil jEnv hinzu

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
    
  3. Bei der ersten Installation wird jEnv kein JDK zugeordnet.

    Ich habe zum Beispiel gerade JDK 8 installiert, aber jEnv weiß nichts davon. So prüfen Sie die Java-Versionen in jEnv

    Im Moment hat es nur Java-Version (jre) auf dem System gefunden. Der * zeigt die aktuell ausgewählte Version. Im Gegensatz zu rvm und rbenv kann jEnv kein JDK für Sie installieren. Sie müssen JDK manuell von der Oracle-Website installieren.

  4. Installieren Sie JDK 6 von der Apple-Website. Dadurch wird Java in /System/Library/Java/JavaVirtualMachines/ installiert. Der Grund, warum wir Java 6 von der Apple-Website installieren, ist, dass Sun kein JDK 6 für MAC entwickelt hat. Daher hat Apple eine eigene Implementierungsversion erstellt bzw. geändert.

  5. Installieren Sie auf ähnliche Weise JDK7 und JDK8.

  6. Fügen Sie JDKs zu jEnv hinzu.

    JDK 6:

    JDK 7:  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8:  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. Überprüfen Sie die mit jenv installierten Java-Versionen

     http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. Jetzt haben wir 3 Java-Versionen auf unserem System. Um eine Standardversion festzulegen, verwenden Sie den Befehl

    jenv local <jenv version>
    

    Ex - Ich wollte, dass Jdk 1.6 IntelliJ startet

    jenv local Oracle64-1.6.0.65
    
  9. Überprüfen Sie die Java-Version

    Java-Version  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

Das ist es. Wir haben jetzt mehrere Java-Versionen und können problemlos zwischen ihnen wechseln. jEnv verfügt außerdem über einige andere Funktionen, z. B. Wrapper für Gradle, Ant, Maven usw. und die Möglichkeit, JVM-Optionen global oder lokal festzulegen. Weitere Informationen finden Sie in der Dokumentation.

7
Dinesh Arora

Ich habe diesen Java-Versionsmanager vor kurzem als Jabba bezeichnet und die Verwendung ist den Versionsmanagern anderer Sprachen wie rvm (Ruby), nvm (Knoten), pyenv (Python) usw. sehr ähnlich kann auf Mac verwendet werden. 

Nach der Installation wird ein Verzeichnis in ~/.jabba erstellt, in das alle Java-Versionen eingefügt werden, die Sie installieren. "Unterstützt die Installation von Oracle JDK (Standard)/Server JRE, Zulu OpenJDK (seit 0.3.0), IBM SDK, Java Technology Edition (seit 0.6.0) und von benutzerdefinierten URLs." 

Die grundlegende Verwendung ist auf ihrem Github aufgeführt. Eine kurze Zusammenfassung zum Start: 

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8
5
York Yang

Ich verwende Mac OS X 10.9.5. So verwalte ich mehrere JDK/JRE auf meinem Computer, wenn eine Version zum Ausführen von Anwendung A und eine andere Version für Anwendung B benötigt wird.

Ich habe das folgende Skript erstellt, nachdem ich Online-Hilfe erhalten hatte.

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${Java_HOME+x}" ]; then
    removeFromPath $Java_HOME
   fi
   export Java_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$Java_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

Ich habe das obige Skript in eine .profile-Datei eingefügt. Öffnen Sie einfach das Terminal, geben Sie vi .profile ein, hängen Sie das Skript mit dem obigen Snippet an und speichern Sie es. Sobald Ihr Ausgangstyp source .profile ist, wird Ihr Profilskript ausgeführt, ohne dass Sie das Terminal neu starten müssen. Geben Sie jetzt Java -version ein, es sollte 1.7 als Ihre aktuelle Version anzeigen. Wenn Sie es in 1.8 ändern möchten, kommentieren Sie die Zeile setjdk jdk1.7.0_15.jdk und entfernen Sie die Kommentarzeichen für die Zeile setjdk jdk1.8.0_60.jdk. Speichern Sie das Skript und führen Sie es erneut mit dem Quellbefehl aus. Ich verwende diesen Mechanismus, um mehrere Versionen von JDK/JRE zu verwalten, wenn ich zwei verschiedene Maven-Projekte kompilieren muss, die verschiedene Java-Versionen benötigen.

4
ChaitanyaBhatt

Jenv auf Mac Sierra:

wenn dies nach der Installation nicht funktioniert, führen Sie diesen Bugfix aus, um die ausführbare Java-Datei zu path hinzuzufügen

export PATH="$HOME/.jenv/shims:$PATH"

obwohl eval "$(jenv init -)" diese Aufgabe erledigen könnte. Der Grund dafür ist, dass der/bin-Ordner nicht mehr wie beschrieben auf seiner Homepage vorhanden ist. Stattdessen wird der Shim-Ordner als/bin verwendet.

  • Stellen Sie sicher, dass ~/.jenv vorhanden ist
  • which Java darf/Library/... drucken.
  • jenv Global 1.8
  • jenv Shell 1.8

Schließlich gibt dir which Java:

/Users/xxxx/.jenv/shims/Java

3
CodeFarmer

Hier ist eine weitere DRY Version für bash (Basierend auf Vegards Antwort)

Ersetzen Sie 1.7 und 1.8 durch alle gewünschten Versionen durch Sie erhalten einen Alias ​​namens 'javaX'. Dabei ist 'X' die Java-Version (7/8 im Snippet unten), mit der Sie die Version problemlos wechseln können

for version in 1.7 1.8; do
    v="${version: -1}"
    h=Java_"$v"_HOME

    export "$h"=$(/usr/libexec/Java_home -v $version)

    alias "Java$v"="export Java_HOME=\$$h"
done
0
elad.chen