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
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 installierenjenv
zum Verwalten der installierten Java-VersionenWie auf http://hanxue-it.blogspot.ch/2014/05/installing-Java-8-managing-multiple.html zu sehen ist, sind diese Schritte zu befolgen.
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
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)
Dieser Leitfaden wurde aus verschiedenen Quellen zusammengestellt (Antworten oben sowie andere Beiträge) und funktioniert einwandfrei.
Siehe https://brew.sh/
brew install jenv
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
export PATH="$HOME/.jenv/shims:$PATH"
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
brew cask install Java
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.
Alle Java-Versionen werden hier installiert: /Library/Java/JavaVirtualMachines
lasst uns einen Blick darauf werfen.
ls -la /Library/Java/JavaVirtualMachines
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
jenv versions
Dabei entspricht XX einem der Elemente in der obigen Versionsliste.
jenv global XX
Java -version
Sollte auch die aktuelle Version angeben, die mit einem Sternchen verwendet wird.
jenv versions
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
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
Wie auf dieser Website gefunden Beginnen wir mit der Installation von jEnv
Führen Sie dies im Terminal aus
brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
Fügen Sie dem bash-Profil jEnv hinzu
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
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.
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.
Installieren Sie auf ähnliche Weise JDK7 und JDK8.
Fügen Sie JDKs zu jEnv hinzu.
JDK 6:
Überprüfen Sie die mit jenv installierten Java-Versionen
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
Überprüfen Sie die Java-Version
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.
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
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.
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.
which Java
darf/Library/... drucken.Schließlich gibt dir which Java
:
/Users/xxxx/.jenv/shims/Java
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