Was /usr/libexec/java_homesagt Ihnen die Ausführung ?
Bart
2
/ usr / libexec / java_home gibt /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat
Möglicherweise müssen Sie nur neu starten. Hast du das versucht?
Bart
Ja, der Computer und das Terminal wurden neu gestartet ... keine Änderung.
Venkat
3
Könnten Sie bitte die hoch gewählte Antwort von @markhellewell unten akzeptieren? Es hätte mir geholfen, es ein bisschen schneller zu finden, und es ist einfach schön. :)
Taytay
Antworten:
1410
Erster Lauf, /usr/libexec/java_home -Vder ungefähr Folgendes ausgibt:
MatchingJavaVirtualMachines(3):1.8.0_05, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home1.6.0_65-b14-462, x86_64:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home1.6.0_65-b14-462, i386:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Wählen Sie die Version aus, die Sie als Standard verwenden möchten ( 1.6.0_65-b14-462aus Gründen der Argumentation), und zwar dann:
@ MattO'Brien es ist etwas, das von der Shell, die Sie verwenden, und der Konfiguration, die Sie haben, abhängt, also kann ich keine vollständige Lösung dafür geben ...
Markhellewell
11
Das sind wirklich Backticks der exportLinie
David West
6
Das hat bei mir nicht funktioniert. Nehmen Sie den Pfad von java_home -V und fügen Sie ihn dem Exportbefehl hinzu, wie folgt: export JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home"
oden
68
Dies funktioniert in Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- Beachten Sie auch, dass java_home teilweise Übereinstimmungen zulässt, sodass Sie nicht die Vollversion einschließen müssen, da die neueste Version gefunden wird. Dies erleichtert Updates.
Antonyh
14
Stellen Sie sicher, dass Sie "nicht" für den Export verwenden.
Schneesturm
409
Diese Antwort ist ein Versuch, Adresse: wie Java - Version systemweite Steuerung (nicht nur in aktuell laufend Shell) , wenn mehrere Versionen von JDK für Entwicklungszwecke auf installierte macOS El Capitan oder neue (Sierra, High Sierra, Mojave) . Soweit ich das beurteilen kann, tut dies keine der aktuellen Antworten (*).
Als Entwickler verwende ich mehrere JDKs und möchte einfach von einem zum anderen wechseln. Normalerweise habe ich den neuesten stabilen für den allgemeinen Gebrauch und andere für Tests. Ich möchte jedoch nicht, dass das System (z. B. wenn ich meine IDE starte) die neueste Version für "Early Access" verwendet, die ich derzeit habe. Ich möchte die Standardeinstellung des Systems steuern, und das sollte zuletzt stabil sein.
Belassen Sie alle JDKs an ihrem Standardspeicherort unter /Library/Java/JavaVirtualMachines. Das System wählt standardmäßig die höchste Version aus.
Um ein JDK standardmäßig von der Auswahl auszuschließen, benennen Sie es Contents/Info.plistin umInfo.plist.disabled . Dieses JDK kann weiterhin verwendet werden, wenn es darauf $JAVA_HOMEverweist oder in einem Skript oder einer Konfiguration explizit referenziert wird. Es wird vom Systembefehl einfach ignoriert java.
Der Systemstarter verwendet das JDK mit der höchsten Version unter denjenigen, die eine Info.plistDatei haben.
Wenn Sie in einer Shell mit alternativem JDK arbeiten, wählen Sie Ihre Methode unter den vorhandenen Antworten ( jenvoder benutzerdefinierten Aliasnamen / Skripten /usr/libexec/java_homeusw.) aus.
(*) Aktuelle Antworten sind entweder veraltet (nicht mehr gültig für macOS El Capitan oder Sierra) oder richten sich nur an ein einzelnes JDK oder nicht an den systemweiten Aspekt. Viele erklären, wie man Änderungen vornimmt $JAVA_HOME, aber dies betrifft nur die aktuelle Shell und was von dort aus gestartet wird. Eine vom Betriebssystem-Launcher gestartete Anwendung ist davon nicht betroffen (es sei denn, Sie ändern die richtige Datei und das Abmelden / Anmelden, was mühsam ist). Das gleiche gilt für jenv, es ist cool und alles, aber soweit ich das beurteilen kann, ändert es lediglich die Umgebungsvariablen, so dass es die gleiche Einschränkung hat.
Dies ist die Antwort , die ich suchte, da jenvnoch der JAVA_HOMELage sind , die systemweite Java - Version zu setzen, dh die eine Eclipse - verwenden würde.
Giovanni Lovato
3
@Rodrigo Ja, wie in "Details der Untersuchung" (oben verlinkt) erwähnt: "Das Installieren eines JDK wird ebenfalls überschrieben /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Anscheinend wird dies der neue Bereich" Einstellungen "starten - dies ist die einzige Ausnahme, die ich zu meiner Lösung gefunden habe: das thingy verwendet weiterhin JDK9 (das letzte, das ich installiert habe), aber keine andere Java-Anwendung. "
Hugues M.
2
Es ist erwähnenswert, dass sich Java-Versionen in / Library / Java / JavaVirtualMachines befinden und dass sich die oben genannte hervorragende Arbeitslösung in diesem Kontext befindet.
Andrew Kostka
3
Genau dies ist die beste und funktionalste Lösung für diese Frage. Leider so.
Aerodynamika
3
Ich kann Ihnen nicht genug für diese Antwort danken. Dadurch wurde das Starten von Anwendungen über den Betriebssystemstarter behoben.
Karthic Raghupathi
248
Zusätzlich zu den obigen Antworten füge ich die folgenden Zeilen in mein .bash_profile(oder .zshrcfür MacOS 10.15+) ein, was das Wechseln wirklich bequem macht (einschließlich des Kommentars von @ elektromin für Java 9):
alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"
Nach dem Einfügen ausführen $ source .bash_profile
Ich kann zu Java 8 wechseln, indem ich Folgendes eingebe:
$ j8
java version "1.8.0_102"Java(TM) SE RuntimeEnvironment(build 1.8.0_102-b14)JavaHotSpot(TM)64-BitServer VM (build 25.102-b14, mixed mode)
Dies ist die Syntax für Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin
3
Fantastische einfache Aliase für schnelles Umschalten.
Gbonetti
Durch Verwenden alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"und anschließendes Eingeben j10können Sie zur aktuellen Version von Java (in meinem Fall Java 10) zurückkehren
intagli
Ich würde ein CLI-Tool ähnlich dem nvmzum Wechseln von Java-Versionen jvm
Andy
Ich erhalte diesen Fehler bei der Beschaffung: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11
56
Eine kleine Fischfunktion basierend auf / usr / libexec / java_home
function jhome
set JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
Wenn Sie keinen Fisch verwenden, können Sie in bash etwas Ähnliches tun:
Nach der Installation von JDK 1.7 müssen Sie dies tun sudo ln -snf, um den Link auf aktuell zu ändern java. Öffnen Sie dazu das Terminal und geben Sie den folgenden Befehl ein:
Wie setze ich die Variable JAVA_HOME? Gibt es einen bestimmten Ort, an dem ich es eingestellt habe?
Venkat
Wo exportiere ich JAVA_HOME? und wo wird das gespeichert?
Venkat
1
Ich habe die Antwort aktualisiert. Kennen Sie die SDK-Version, die Sie installiert haben? Der Ordnername nimmt die SDK-Versionsnummer an, sodass sich die obigen Befehle möglicherweise etwas ändern.
Trein
Ich habe die neueste installiert, ich glaube es ist 51.
Venkat
Die Variable JAVA_HOMEwird in der aktuellen Terminalsitzung exportiert. Sie können es zu unserem hinzufügen, .bashrcwenn Sie möchten. Ich werde die Befehle an die letzte Version anpassen.
Trein
32
Die Verwendung von jenv ist ein einfacher Weg.
1.Installieren Sie jenv
curl -s get.jenv.io | Bash
2.Config jenv
cd ~ / .jenv / Kandidaten /
mkdir java
CD Java
mkdir 1.7
mkdir 1.8
Anstelle von "jenv use java 1.8" musste ich "jenv shell 1.8" verwenden. "Shell" kann je nach Bedarf auch "global" oder "lokal" sein.
Steve Gelman
1
jenv ist schön, wenn es funktioniert. Ich würde jedoch dagegen empfehlen, da die verwendete Standard-Java-Version nicht "wirklich" geändert wird. Dies wird durch Ausführen des Befehls "/ usr / libexec / java_home -V" deutlich, nur durch JAVA_HOME. Dies führt bei einigen Anwendungen zu seltsamen Problemen, z. B. bei Eclipse.
Simon
Abgesehen davon schlägt dieser paranoide Teil von mir vor, nichts zu kräuseln, um zu schlagen. Selbst wenn Sie der Meinung sind, dass die Website vertrauenswürdig ist, kann Ihnen niemand garantieren, dass sie nicht hackbar ist. Verwenden Sie den Paketmanager Ihres Betriebssystems.
Ich benutze ein ähnliches Tool: sdkman.io/usage - IMHO viel besserer Ansatz als manuelle Aliase usw.
SathOkh
12
function setjdk(){if[ $#-ne 0]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'if[-n "${JAVA_HOME+x}"]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
setzen dies in Ihrer ~ / .profile und verwenden Sie es in Ihrem Terminal wie so setjdk 1.8, setjdk 1.7, setjdk 9etc etc ...
Wenn Sie nicht haben, removeFromPathdann ist es:
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
Vier einfache Schritte mit dem Terminal für Personen, die den Standardprozess verwenden .. :)
echo $JAVA_HOMEgibt dir aktuelles Java-Zuhause. Zum Beispiel:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/ Sie gelangen zu dem Ordner, in dem Sie normalerweise jdks installieren (dies kann für Ihre Computer anders sein).
lszeigen Sie verfügbare Ordner ( in der Regel wird es die Versionsnummern hat, zum Beispiel: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' wird das Java-Zuhause ändern ..
macOS El Capitan oder höher wählt die höhere Version des JDK aus, die in verfügbar /Library/Java/JavaVirtualMachinesist. Um ein Downgrade durchzuführen, können Sie die Datei Info.plistin eine andere Info.plist.disabledVersion umbenennen, sodass das Betriebssystem eine frühere Version auswählt.
**USAGE**/usr/libexec/java_home helps users set a $JAVA_HOME in their login rc files, or provides a way for
command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
tecture requirement.The--exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
which is useful for starting Java command-line tools from launchd plists without hardcoding the full
path to the Java command-line tool.Usagefor bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`Usagefor csh-style shells:% setenv JAVA_HOME `/usr/libexec/java_home`
Finden Sie zuerst heraus, wo Sie die Umgebungsvariablen speichern.
Emacs
bash_profile
zshrc-Datei
Schritte zum Einrichten der Umgebungsvariablen: -
Laden Sie das JDK von JAVA herunter
Installieren Sie es per Doppelklick
Richten Sie nun Umgebungsvariablen in Ihrer Datei ein
ein. Für emacs.profile können Sie diesen Link verwenden ODER den folgenden Screenshot sehen
b. Für die Einrichtung des ZSH-Profils -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home2. source ~/.zshrc -Restart zshrc to reflect the changes.3. echo $JAVA_HOME - make sure path is set up properly
---->/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home4. java -version
--> java version "1.8.0_112"Java(TM) SE RuntimeEnvironment(build 1.8.0_112-b16)JavaHotSpot(TM)64-BitServer VM (build 25.112-b16, mixed mode)
Alles eingestellt Jetzt können Sie die JAVA-Version einfach aktualisieren oder herabsetzen.
Ich habe die Antwort von @Alex oben angepasst und Folgendes geschrieben, um den Code für Java 9 zu korrigieren.
$ cat ~/.jdk
#!/bin/bash
#list available jdks
alias jdks="/usr/libexec/java_home -V"# jdk version switching - e.g.`jdk 6` will switch to version 1.6
function jdk(){
echo "Switching java version $1";
requestedVersion=$1
oldStyleVersion=8#Set the version
if[ $requestedVersion -gt $oldStyleVersion ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v $1);else
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
fi
echo "Setting JAVA_HOME=$JAVA_HOME"
which java
java -version;}
Wechseln Sie zu Java 8
$ jdk 8Switching java version 8Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/usr/bin/java
java version "1.8.0_131"Java(TM) SE RuntimeEnvironment(build 1.8.0_131-b11)JavaHotSpot(TM)64-BitServer VM (build 25.131-b11, mixed mode)
Wechseln Sie zu Java 9
$ jdk 9Switching java version 9Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/usr/bin/java
java version "9.0.1"Java(TM) SE RuntimeEnvironment(build 9.0.1+11)JavaHotSpot(TM)64-BitServer VM (build 9.0.1+11, mixed mode)
Vielen Dank! Beachten Sie, dass Sie die `-Zeichen einfügen müssen. und natürlich ersetzen Sie 1.8 durch die Version, die Sie möglicherweise benötigen. In meinem Fall 13.0.2
Jamie S
3
Wenn Sie Fisch verwenden und einen Mac verwenden und zwischen JDKs wechseln möchten, funktioniert das unten für mich auf einem Mac.
@ kenglxns Antwort hat bei mir nicht funktioniert und ich habe herausgefunden, dass bcos nicht -g gesetzt hat, was global ist!
Fügen Sie unten unter ~ / .config / fish / config.fish ein
alias j8="jhome -v 1.8.0_162"
alias j9="jhome -v 9.0.1"
function jhome
set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
funcsave jhome
Um zu wissen, welche Version / Nebenversion Sie installiert haben, können Sie Folgendes tun:
/usr/libexec/java_home -V 579msWed14Feb11:44:012018MatchingJavaVirtualMachines(3):9.0.1, x86_64:"Java SE 9.0.1"/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home1.8.0_162, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home1.8.0_121, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
Basierend auf der Antwort von @markhellewell habe ich einige Alias-Funktionen erstellt, die dies für Sie erledigen. Fügen Sie diese einfach Ihrer Shell-Startdatei hinzu
#list available jdks
alias jdks="/usr/libexec/java_home -V"# jdk version switching - e.g.`jdk 6` will switch to version 1.6
function jdk(){
echo "Switching java version";
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
java -version;}
Hier ist, wie ich es unter meinem Linux (Ubuntu / Mint Mate) mache. Ich denke, Mac kann es ähnlich machen.
Installiere & konfiguriere
Schritte:
[Basic - Teil]
Laden Sie jdk (die .tgz- Datei) herunter. von Hand .
Dekomprimieren und richtig umbenennen, an einem geeigneten Ort.
z.B /mnt/star/program/java/jdk-1.8
Erstellen Sie einen Softlink, der später geändert wird, um die Java-Version zu wechseln.
zB ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
So /mnt/star/program/java/javaist der Softlink.
In JAVA_HOMEeinem Startskript festlegen.
Könnte Datei wie verwenden /etc/profile.d/eric.shoder einfach verwenden ~/.bashrc.
z.BJAVA_HOME=/mnt/star/program/java/java
Öffnen Sie dann eine neue Bash-Shell. java -versionsollte die Java-Version drucken.
[Mehr Version - Teil]
Laden Sie nach Bedarf weitere Java-Versionen herunter und installieren Sie sie, ähnlich wie in den obigen Schritten.
z.B /mnt/star/program/java/jdk-11
[Schalterteil]
In ~/.bashrcdefinieren Variable für verschiedene Java - Version.
z.B _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11' _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8' # dir of default version, _E_JAVA_HOME_D=$_E_JAVA_HOME_8
In ~/.bashrcdefiniert Befehl Java - Version zu wechseln.
z.B ## switch java version, alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME" alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME" # default java version, alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME" alias jv="java -version"
Im Terminal, source ~/.bashrc die Änderungen wirksam.
Dann könnte mit den definierten Befehlen umgeschaltet werden.
Befehle - von oben config
Befehle:
jv11
Wechseln Sie zu Java 11
jv8
Wechseln Sie zu Java 8
jvd
Wechseln Sie zur Standard-Java-Version, die _E_JAVA_HOME_Doben definiert ist.
jv
Java-Version anzeigen.
Beispielausgabe:
eric@eric-pc:~$ jv
java version "1.8.0_191"Java(TM) SE RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1"2018-10-16 LTS
Java(TM) SE RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer VM 18.9(build 11.0.1+13-LTS, mixed mode)
eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"Java(TM) SE RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$
Mechanismus
Es wechselt durch Ändern des Softlinks, der als verwendet wird JAVA_HOME.
Tipps
Wenn ich jdk von Hand auf meinem Computer installiere, behalte ich die Nebenversion bei und stelle dann einen Softlink mit der Hauptversion her, jedoch ohne die Nebenversion.
zB
// das ist das eigentliche dir, jdk1.8.0_191
// Dies ist ein weicher Link zu jdk1.8.0_191 jdk-8
// Dies ist ein weicher Link zu jdk-8oderjdk-11 java
Ich definiere Befehlsalias in ~/.bashrc, definiere aber Variable in einer separaten Datei.
Ich benutze ~/.eric_var, um die Variablen zu definieren, und ~/.bashrcwerde es beschaffen (zB source $HOME/.eric_var).
Eine einfache Möglichkeit, ein separat installiertes JDK in die von angegebene Liste aufzunehmen, /usr/libexec/java_home -Vbesteht darin, das Verzeichnis wie folgt zu verknüpfen:
export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)
alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'
export JAVA_HOME=$JAVA_13_HOME
Es ist eine einfache JavaOne, mit der die aktuelle Java-Version definiert werden kann. Die Version kann in einer Shell verwendet werden, die geöffnet wird, nachdem eine Version im Tool ausgewählt wurde.
/usr/libexec/java_home
sagt Ihnen die Ausführung ?Antworten:
Erster Lauf,
/usr/libexec/java_home -V
der ungefähr Folgendes ausgibt:Wählen Sie die Version aus, die Sie als Standard verwenden möchten (
1.6.0_65-b14-462
aus Gründen der Argumentation), und zwar dann:oder Sie können nur die Hauptversion angeben, wie:
Wenn Sie jetzt laufen, werden
java -version
Sie sehen:Fügen Sie die
export JAVA_HOME…
Zeile zur Init-Datei Ihrer Shell hinzu.Für Bash (wie von Antonyh angegeben ):
Für Fische (wie von Ormurin angegeben)
quelle
export
Linieexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
- Beachten Sie auch, dass java_home teilweise Übereinstimmungen zulässt, sodass Sie nicht die Vollversion einschließen müssen, da die neueste Version gefunden wird. Dies erleichtert Updates.Diese Antwort ist ein Versuch, Adresse: wie Java - Version systemweite Steuerung (nicht nur in aktuell laufend Shell) , wenn mehrere Versionen von JDK für Entwicklungszwecke auf installierte macOS El Capitan oder neue (Sierra, High Sierra, Mojave) . Soweit ich das beurteilen kann, tut dies keine der aktuellen Antworten (*).
Als Entwickler verwende ich mehrere JDKs und möchte einfach von einem zum anderen wechseln. Normalerweise habe ich den neuesten stabilen für den allgemeinen Gebrauch und andere für Tests. Ich möchte jedoch nicht, dass das System (z. B. wenn ich meine IDE starte) die neueste Version für "Early Access" verwendet, die ich derzeit habe. Ich möchte die Standardeinstellung des Systems steuern, und das sollte zuletzt stabil sein.
Der folgende Ansatz funktioniert mindestens mit Java 7 bis 12 (früher Zugriff zum Zeitpunkt dieses Schreibens), mit Oracle JDK oder OpenJDK (einschließlich Builds von AdoptOpenJDK, die nach Mitte Oktober 2018 erstellt wurden ).
Lösung ohne Tools von Drittanbietern:
/Library/Java/JavaVirtualMachines
. Das System wählt standardmäßig die höchste Version aus.Contents/Info.plist
in umInfo.plist.disabled
. Dieses JDK kann weiterhin verwendet werden, wenn es darauf$JAVA_HOME
verweist oder in einem Skript oder einer Konfiguration explizit referenziert wird. Es wird vom Systembefehl einfach ignoriertjava
.Der Systemstarter verwendet das JDK mit der höchsten Version unter denjenigen, die eine
Info.plist
Datei haben.Wenn Sie in einer Shell mit alternativem JDK arbeiten, wählen Sie Ihre Methode unter den vorhandenen Antworten (
jenv
oder benutzerdefinierten Aliasnamen / Skripten/usr/libexec/java_home
usw.) aus.Einzelheiten der Untersuchung in diesem Kern .
(*) Aktuelle Antworten sind entweder veraltet (nicht mehr gültig für macOS El Capitan oder Sierra) oder richten sich nur an ein einzelnes JDK oder nicht an den systemweiten Aspekt. Viele erklären, wie man Änderungen vornimmt
$JAVA_HOME
, aber dies betrifft nur die aktuelle Shell und was von dort aus gestartet wird. Eine vom Betriebssystem-Launcher gestartete Anwendung ist davon nicht betroffen (es sei denn, Sie ändern die richtige Datei und das Abmelden / Anmelden, was mühsam ist). Das gleiche gilt für jenv, es ist cool und alles, aber soweit ich das beurteilen kann, ändert es lediglich die Umgebungsvariablen, so dass es die gleiche Einschränkung hat.quelle
jenv
noch derJAVA_HOME
Lage sind , die systemweite Java - Version zu setzen, dh die eine Eclipse - verwenden würde./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/
. Anscheinend wird dies der neue Bereich" Einstellungen "starten - dies ist die einzige Ausnahme, die ich zu meiner Lösung gefunden habe: das thingy verwendet weiterhin JDK9 (das letzte, das ich installiert habe), aber keine andere Java-Anwendung. "Zusätzlich zu den obigen Antworten füge ich die folgenden Zeilen in mein
.bash_profile
(oder.zshrc
für MacOS 10.15+) ein, was das Wechseln wirklich bequem macht (einschließlich des Kommentars von @ elektromin für Java 9):Nach dem Einfügen ausführen
$ source .bash_profile
Ich kann zu Java 8 wechseln, indem ich Folgendes eingebe:
quelle
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"
und anschließendes Eingebenj10
können Sie zur aktuellen Version von Java (in meinem Fall Java 10) zurückkehrennvm
zum Wechseln von Java-Versionenjvm
/Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
Eine kleine Fischfunktion basierend auf / usr / libexec / java_home
Wenn Sie keinen Fisch verwenden, können Sie in bash etwas Ähnliches tun:
Um dann zwischen Javas zu wechseln, gehen Sie wie folgt vor:
Ref: https://gist.github.com/kenglxn/1843d552dff4d4233271
quelle
export JAVA_HOME=(/usr/libexec/java_home $argv)
anstelle der zweiten Zeile Ihrerjhome
Funktion schreiben .Es ist etwas schwierig, aber versuchen Sie, die unter Installieren von Java unter OS X 10.9 (Mavericks) beschriebenen Schritte auszuführen . Grundsätzlich müssen Sie Ihren Alias auf aktualisieren
java
.Schritt für Schritt:
Nach der Installation von JDK 1.7 müssen Sie dies tun
sudo ln -snf
, um den Link auf aktuell zu ändernjava
. Öffnen Sie dazu das Terminal und geben Sie den folgenden Befehl ein:Beachten Sie, dass sich das Verzeichnis
jdk1.7.0_51.jdk
abhängig von der von Ihnen installierten SDK-Version ändern kann.Jetzt müssen Sie festlegen
JAVA_HOME
, wojdk_1.7.0_xx.jdk
installiert werden soll. Öffnen Sie das Terminal erneut und geben Sie Folgendes ein:Sie können die
export JAVA_HOME
obige Zeile in Ihre.bashrc
Datei einfügen, um Java dauerhaft in Ihrem Terminal zu habenquelle
JAVA_HOME
wird in der aktuellen Terminalsitzung exportiert. Sie können es zu unserem hinzufügen,.bashrc
wenn Sie möchten. Ich werde die Befehle an die letzte Version anpassen.Die Verwendung von jenv ist ein einfacher Weg.
1.Installieren Sie jenv
2.Config jenv
3.Symlink den JDK-Pfad
4.Sie sind fertig
Schaltbefehl:
Standard festlegen:
quelle
Installieren Sie JDK, nicht nur JRE
gibt
Nächster
TextEdit zeigt Ihnen eine leere Seite, die Sie ausfüllen können.
Zum Dokument hinzufügen:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
im Terminal:
Versuchen Sie den Befehl:
javac -version
sollte ausgeben:
quelle
tl; dr
Fügen Sie die Zeile hinzu:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
in die Datei
~/.bash_profile
(Ersetzen Sie jdk1.8.0_144.jdk durch Ihre heruntergeladene Version.)
dann
source ~/.bash_profile
quelle
Verwenden Sie jenv, es ist wie ein Java-Umgebungsmanager. Es ist super einfach zu bedienen und zu reinigen
Führen Sie für Mac die folgenden Schritte aus:
Installation: Wenn Sie bash verwenden, gehen Sie folgendermaßen vor:
Fügen Sie jenv die gewünschten Versionen von JVM hinzu:
Überprüfen Sie die installierten Versionen:
Legen Sie die Java-Version fest, die Sie verwenden möchten:
quelle
setzen dies in Ihrer ~ / .profile und verwenden Sie es in Ihrem Terminal wie so
setjdk 1.8
,setjdk 1.7
,setjdk 9
etc etc ...Wenn Sie nicht haben,
removeFromPath
dann ist es:function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }
quelle
Vier einfache Schritte mit dem Terminal für Personen, die den Standardprozess verwenden .. :)
echo $JAVA_HOME
gibt dir aktuelles Java-Zuhause. Zum Beispiel:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
Sie gelangen zu dem Ordner, in dem Sie normalerweise jdks installieren (dies kann für Ihre Computer anders sein).ls
zeigen Sie verfügbare Ordner ( in der Regel wird es die Versionsnummern hat, zum Beispiel:jdk1.8.0_191.jdk openjdk-11.0.2.jdk
)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
wird das Java-Zuhause ändern ..quelle
Fügen Sie der
~/.zshenv
Datei den folgenden Befehl hinzuquelle
macOS El Capitan oder höher wählt die höhere Version des JDK aus, die in verfügbar
/Library/Java/JavaVirtualMachines
ist. Um ein Downgrade durchzuführen, können Sie die DateiInfo.plist
in eine andereInfo.plist.disabled
Version umbenennen, sodass das Betriebssystem eine frühere Version auswählt.quelle
Aus der offiziellen Manpage java_home (1) von Apple :
quelle
Wenn Sie es immer noch nicht einstellen können. mit diesem Befehl.
export JAVA_HOME =
/usr/libexec/java_home -v 1.8
dann musst du diesen benutzen.
export JAVA_HOME =
$(/usr/libexec/java_home -v 1.8)
es wird sicherlich funktionieren.
quelle
Finden Sie zuerst heraus, wo Sie die Umgebungsvariablen speichern.
Schritte zum Einrichten der Umgebungsvariablen: -
Richten Sie nun Umgebungsvariablen in Ihrer Datei ein
ein. Für emacs.profile können Sie diesen Link verwenden ODER den folgenden Screenshot sehen
b. Für die Einrichtung des ZSH-Profils -
Alles eingestellt Jetzt können Sie die JAVA-Version einfach aktualisieren oder herabsetzen.
quelle
JDK-Switch-Skript
Ich habe die Antwort von @Alex oben angepasst und Folgendes geschrieben, um den Code für Java 9 zu korrigieren.
Wechseln Sie zu Java 8
Wechseln Sie zu Java 9
quelle
Sie können es zu Ihrem .bash_profile hinzufügen, um die Version standardmäßig festzulegen.
quelle
Wenn Sie Fisch verwenden und einen Mac verwenden und zwischen JDKs wechseln möchten, funktioniert das unten für mich auf einem Mac.
@ kenglxns Antwort hat bei mir nicht funktioniert und ich habe herausgefunden, dass bcos nicht -g gesetzt hat, was global ist!
Fügen Sie unten unter ~ / .config / fish / config.fish ein
Um zu wissen, welche Version / Nebenversion Sie installiert haben, können Sie Folgendes tun:
quelle
Wenn Sie mehrere Versionen haben und etwas mit einer bestimmten Version ausführen möchten, verwenden Sie dieses Beispiel:
quelle
Basierend auf der Antwort von @markhellewell habe ich einige Alias-Funktionen erstellt, die dies für Sie erledigen. Fügen Sie diese einfach Ihrer Shell-Startdatei hinzu
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
quelle
Hier ist, wie ich es unter meinem Linux (Ubuntu / Mint Mate) mache. Ich denke, Mac kann es ähnlich machen.
Installiere & konfiguriere
Schritte:
z.B
/mnt/star/program/java/jdk-1.8
zB
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
So
/mnt/star/program/java/java
ist der Softlink.JAVA_HOME
einem Startskript festlegen.Könnte Datei wie verwenden
/etc/profile.d/eric.sh
oder einfach verwenden~/.bashrc
.z.B
JAVA_HOME=/mnt/star/program/java/java
java -version
sollte die Java-Version drucken.z.B
/mnt/star/program/java/jdk-11
~/.bashrc
definieren Variable für verschiedene Java - Version.z.B
_E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
_E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
# dir of default version,
_E_JAVA_HOME_D=$_E_JAVA_HOME_8
~/.bashrc
definiert Befehl Java - Version zu wechseln.z.B
## switch java version,
alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
# default java version,
alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
alias jv="java -version"
source ~/.bashrc
die Änderungen wirksam.Befehle - von oben config
Befehle:
jv11
Wechseln Sie zu Java 11
jv8
Wechseln Sie zu Java 8
jvd
Wechseln Sie zur Standard-Java-Version, die
_E_JAVA_HOME_D
oben definiert ist.jv
Java-Version anzeigen.
Beispielausgabe:
Mechanismus
JAVA_HOME
.Tipps
Wenn ich jdk von Hand auf meinem Computer installiere, behalte ich die Nebenversion bei und stelle dann einen Softlink mit der Hauptversion her, jedoch ohne die Nebenversion.
zB
// das ist das eigentliche dir,
jdk1.8.0_191
// Dies ist ein weicher Link zu
jdk1.8.0_191
jdk-8
// Dies ist ein weicher Link zu
jdk-8
oderjdk-11
java
Ich definiere Befehlsalias in
~/.bashrc
, definiere aber Variable in einer separaten Datei.Ich benutze
~/.eric_var
, um die Variablen zu definieren, und~/.bashrc
werde es beschaffen (zBsource $HOME/.eric_var
).quelle
Eine einfache Möglichkeit, ein separat installiertes JDK in die von angegebene Liste aufzunehmen,
/usr/libexec/java_home -V
besteht darin, das Verzeichnis wie folgt zu verknüpfen:Verwenden Sie beispielsweise Folgendes, um das in Android Studio enthaltene JDK (1.8.0_152 zum Zeitpunkt des Schreibens) zu registrieren:
Jetzt
java_home
wird das JDK unter aufgelistetMatching Java Virtual Machines
und Sie können es wie oben beschrieben auswählen.quelle
Ich habe es für das lokale Terminal mit gemacht
quelle
Dieses Tool erledigt die Arbeit für Sie:
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
Es ist eine einfache JavaOne, mit der die aktuelle Java-Version definiert werden kann. Die Version kann in einer Shell verwendet werden, die geöffnet wird, nachdem eine Version im Tool ausgewählt wurde.
quelle
ZU EINFACHE LÖSUNG: Was für Kopfschmerzen - das war eine schnelle und einfache Lösung, die für mich funktioniert hat.
Mac OS Sierra Version 10.12.13
Verwenden Sie die Tastenkombinationen: CMD + UMSCHALT + G - geben Sie "/ Library /" ein.
Suchen Sie den JAVA-Ordner
Rechtsklick Java-Ordner = In den Papierkorb verschieben (Passwort erforderlich)
Installieren Sie: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Laden Sie das Javascript SDK herunter
quelle