Być może po prostu musisz zrestartować komputer. Próbowałeś tego?
Bart
Tak, uruchomiłem ponownie komputer i terminal ... bez zmian.
Venkat
3
Czy możesz zaakceptować wysoko głosowaną odpowiedź z @markhellewell poniżej? Pomogłoby mi to znaleźć trochę szybciej i jest po prostu fajne. :)
Taytay
Odpowiedzi:
1404
Pierwszy bieg, /usr/libexec/java_home -Vktóry wyświetli coś takiego:
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
Wybierz wersję, która ma być domyślna ( 1.6.0_65-b14-462ze względu na argumenty), a następnie:
@ MattO'Brien jest to coś, co zależy od używanej powłoki i konfiguracji, którą masz na miejscu, więc nie mogę dać kompletnego rozwiązania tego…
markhellewell
11
te naprawdę są w odwrocie exportlinii
David West
6
To mi nie zadziałało. Chwyć ścieżkę od uruchomienia java_home -V i dodaj to do polecenia eksportu, tak jak ten eksport JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home"
od
68
Działa to w Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- zauważ również, że java_home pozwala na częściowe dopasowania, więc nie musisz dołączać pełnej wersji, ponieważ znajdzie ona najnowszą zainstalowaną. Ułatwia to aktualizacje.
antonyh
14
Upewnij się, że używasz `` nie '' do eksportu.
zamieć
407
Ta odpowiedź jest próbą rozwiązania: jak kontrolować wersję Java w całym systemie (nie tylko w aktualnie uruchomionej powłoce), gdy kilka wersji JDK jest zainstalowanych do celów programistycznych na macOS El Capitan lub nowszym (Sierra, High Sierra, Mojave) . O ile wiem, żadna z obecnych odpowiedzi tego nie robi (*).
Jako programista używam kilku JDK i chcę łatwo przełączać się między nimi. Zwykle mam najnowszą stabilną do ogólnego użytku, a drugą do testów. Ale nie chcę, aby system (np. Kiedy uruchamiam IDE) korzystał z najnowszej wersji „wczesnego dostępu”, którą mam na razie. Chcę kontrolować domyślne ustawienia systemu, które powinny być najnowszą stabilnością.
pozostaw wszystkie pakiety JDK w domyślnej lokalizacji, poniżej /Library/Java/JavaVirtualMachines. System domyślnie wybierze najwyższą wersję.
Aby domyślnie Contents/Info.plistwybrać JDK, zmień jego nazwę naInfo.plist.disabled . Tego pakietu JDK można nadal używać, gdy $JAVA_HOMEwskazuje na niego, lub jawnie odwoływać się do niego w skrypcie lub konfiguracji. Zostanie po prostu zignorowany przez javapolecenie systemu .
Program uruchamiający system użyje JDK z najwyższą wersją spośród tych, które mają Info.plistplik.
Pracując w powłoce z alternatywnym JDK, wybierz metodę spośród istniejących odpowiedzi (jenv lub niestandardowych aliasów / skryptów /usr/libexec/java_home, itp.).
(*) Bieżące odpowiedzi są albo przestarzałe (nie są już ważne dla macOS El Capitan lub Sierra), albo dotyczą tylko jednego JDK, lub nie odnoszą się do całego systemu. Wielu wyjaśnia, jak to zmienić $JAVA_HOME, ale wpływa to tylko na bieżącą powłokę i to, co jest z niej uruchamiane. Nie wpłynie to na aplikację uruchomioną z programu uruchamiającego system operacyjny (chyba że zmienisz odpowiedni plik i wylogujesz się / zalogujesz, co jest uciążliwe). To samo dotyczy jenv, jest fajne i wszystko, ale o ile mogę powiedzieć, po prostu zmienia zmienne środowiskowe, więc ma takie same ograniczenia.
To była odpowiedź, której szukałem, ponieważ jenvani nie JAVA_HOMEjesteśmy w stanie ustawić systemowej wersji Java, tj. Tej , której użyłaby Eclipse.
Giovanni Lovato,
3
@Rodrigo Tak, jak wspomniano w „Szczegółach dochodzenia” (link powyżej): „Instalowanie JDK również nadpisuje /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Najwyraźniej jest to ten, który uruchomi nowe okienko Preferencji - to jedyny wyjątek, jaki znalazłem dla mojego rozwiązania: że thingy nadal będzie korzystać z JDK9 (najnowsza wersja, którą zainstalowałem), ale żadna inna aplikacja Java tego nie robi. ”
Hugues M.,
2
Warto zauważyć, że wersje java znajdują się w / Library / Java / JavaVirtualMachines i że powyższe doskonałe działające rozwiązanie znajduje się w tym kontekście.
Andrew Kostka,
3
To właśnie jest najlepsze i najbardziej funkcjonalne rozwiązanie tego pytania. Niestety tak.
Aerodynamika,
3
Nie mogę ci wystarczająco podziękować za tę odpowiedź. To naprawiło uruchamianie aplikacji z programu uruchamiającego system operacyjny.
Karthic Raghupathi
247
Dodając do powyższych odpowiedzi, umieściłem następujące wiersze w moim .bash_profile(lub .zshrcw systemie MacOS 10.15+), co sprawia, że przełączanie jest bardzo wygodne (w tym komentarz @ elektromin dla 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"
Po wstawieniu uruchom $ source .bash_profile
Mogę przełączyć się na Javę 8, wpisując następujące polecenie:
$ 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)
Oto składnia Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin
3
Niesamowite proste aliasy do szybkiego przełączania.
gbonetti
Używanie, alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"a następnie pisanie j10pozwala na powrót do aktualnej wersji Java (w moim przypadku Java 10)
intagli
Zrobiłbym narzędzie cli podobne do nvmprzełączania wersji Java, ale akronim jvmoznacza już coś innego :)
jak ustawić zmienną JAVA_HOME? czy jest jakieś szczególne miejsce, w którym je ustawiłem?
Venkat
gdzie eksportuję JAVA_HOME? i gdzie to zostanie zapisane?
Venkat
1
Zaktualizowałem odpowiedź. Czy znasz zainstalowaną wersję zestawu SDK? Nazwa folderu ma numer wersji zestawu SDK, więc powyższe polecenia mogą się nieco zmienić.
Trein
Zainstalowałem najnowszy, myślę, że to 51.
Venkat
Zmienna JAVA_HOMEzostanie wyeksportowana w bieżącej sesji terminalu. Możesz dodać go do naszego, .bashrcjeśli chcesz. Dostosuję polecenia do ostatniej wersji.
Trein
32
Użyj jenv to łatwy sposób.
1. zainstaluj jenv
curl -s get.jenv.io | grzmotnąć
2.Skonfiguruj jenv
cd ~ / .jenv / kandydaci /
mkdir java
cd java
mkdir 1.7
mkdir 1.8
Zamiast „jenv use java 1.8” musiałem użyć „jenv shell 1.8”. „powłoka” może być również „globalna” lub „lokalna”, w zależności od potrzeby.
Steve Gelman,
1
jenv jest fajny, kiedy działa. Odradzałbym to jednak, ponieważ tak naprawdę nie „zmienia” domyślnej używanej wersji Java, widocznej po uruchomieniu polecenia „/ usr / libexec / java_home -V”, tylko JAVA_HOME. Powoduje to dziwne problemy z niektórymi aplikacjami, np. Eclipse.
simon
Poza tym ta paranoidalna część mnie sugeruje, żeby nie zwijać czegokolwiek, co mogłoby się zepsuć. Nawet jeśli uważasz, że witryna jest zaufana, nikt nie może zagwarantować , że nie da się jej zhakować. Użyj menedżera pakietów systemu operacyjnego.
Używam podobnego narzędzia: sdkman.io/usage - IMHO znacznie lepsze podejście niż ręczne aliasy itp.
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
}
umieścić to w pliku ~ / .profile i używać go w terminalu jak tak setjdk 1.8, setjdk 1.7, setjdk 9etc etc ...
Jeśli nie masz removeFromPath, to:
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
MacOS El Capitan lub nowszy wybierze wyższą wersję JDK dostępną w /Library/Java/JavaVirtualMachines, więc aby obniżyć wersję, możesz zmienić nazwę pliku Info.plistna inną, Info.plist.disabledtak aby system operacyjny wybrał poprzednią wersję.
**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`
Najpierw dowiedz się, gdzie przechowujesz zmienne środowiskowe
emacs
bash_profile
plik zshrc
Kroki, aby skonfigurować zmienną środowiskową: -
Pobierz jdk z JAVA
zainstaluj go podwójnym kliknięciem
Teraz skonfiguruj zmienne środowiskowe w swoim pliku
za. W przypadku pliku emacs.profile możesz użyć tego linku LUB zobacz zrzut ekranu poniżej
b. Do konfiguracji profilu ZSH -
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)
Wszystko gotowe Teraz możesz łatwo uaktualnić lub zdegradować wersję JAVA.
Dostosowałem odpowiedź z @Alex powyżej i napisałem następujące, aby naprawić kod dla Java 9.
$ 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;}
Przełącz się na Javę 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)
Przejdź do 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)
Dzięki! Warto zauważyć, że musisz dołączyć znaki `. i oczywiście zamień 1.8 na dowolną wersję, której możesz potrzebować. W moim przypadku 13.0.2
Jamie S
3
Jeśli używasz ryb i używasz Maca i chcesz mieć możliwość przełączania się między JDK, to poniżej działa dla mnie na Macu.
Odpowiedź @ kenglxn nie zadziałała dla mnie i zorientowałem się, że bcos nie ustawił -g, co jest globalne!
Umieść poniżej w ~ / .config / fish / config.fish
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
Aby wiedzieć, którą wersję / wersję podrzędną zainstalowałeś, możesz:
/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
Na podstawie odpowiedzi @markhellewell stworzyłem kilka funkcji aliasu, które zrobią to za Ciebie. Po prostu dodaj je do pliku startowego powłoki
#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;}
Oto jak to robię na moim Linuksie (kolega Ubuntu / Mint). Myślę, że Mac może to zrobić podobnie.
Zainstaluj i skonfiguruj
Kroki:
[Podstawowy - część]
Pobierz jdk ( plik .tgz ) ręcznie.
Rozpakuj i zmień nazwę poprawnie, w odpowiednim miejscu.
na przykład /mnt/star/program/java/jdk-1.8
Utwórz miękki link, który zostanie zmieniony, aby zmienić wersję Java później.
np. ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Tak /mnt/star/program/java/javajest miękkie łącze.
Ustaw JAVA_HOMEw skrypcie startowym.
Można użyć pliku podobnego /etc/profile.d/eric.shlub po prostu użyć ~/.bashrc.
na przykładJAVA_HOME=/mnt/star/program/java/java
Następnie otwórz nową powłokę bash. java -versionpowinien wydrukować wersję Java.
[Więcej wersji - część]
Pobierz i zainstaluj więcej wersji Java, w razie potrzeby, podobnie jak w powyższych krokach.
na przykład /mnt/star/program/java/jdk-11
[Switch - part]
W ~/.bashrczdefiniuj zmienną dla różnych wersji Java.
na przykład _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
W ~/.bashrczdefiniuj polecenie przełączania wersji Java.
na przykład ## 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"
W terminalu, source ~/.bashrcaby zmiany zostały wprowadzone.
Następnie można przełączyć przy użyciu zdefiniowanych poleceń.
Polecenia - z powyższej konfiguracji
Polecenia:
jv11
Przełącz się na Javę 11
jv8
Przełącz się na Javę 8
jvd
Przełącz na domyślną wersję Java, która jest oznaczona przez _E_JAVA_HOME_Dzdefiniowaną powyżej.
jv
Pokaż wersję Java.
Przykładowe dane wyjściowe:
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:~$
Mechanizm
Przełącza się, zmieniając miękkie łącze, które jest używane jako JAVA_HOME.
Porady
Podczas ręcznego instalowania jdk na moim komputerze zachowuję wersję pomocniczą, a następnie tworzę miękkie łącze z wersją główną, ale bez wersji dodatkowej.
np.
// to jest rzeczywisty katalog, jdk1.8.0_191
// to jest miękki link do jdk1.8.0_191 jdk-8
// to jest miękki link do jdk-8lubjdk-11 java
Definiuję alias polecenia w ~/.bashrc, ale zmienną definiuję w osobnym pliku.
Używam ~/.eric_vardo definiowania zmiennych i ~/.bashrcbędę je pozyskiwał (np source $HOME/.eric_var.).
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
Jest to prosta JavaOne, której można użyć do zdefiniowania bieżącej wersji Java. Wersja może być używana w powłoce, która jest otwierana po wybraniu wersji w narzędziu.
/usr/libexec/java_home
ci wykonywanie ?Odpowiedzi:
Pierwszy bieg,
/usr/libexec/java_home -V
który wyświetli coś takiego:Wybierz wersję, która ma być domyślna (
1.6.0_65-b14-462
ze względu na argumenty), a następnie:lub możesz podać tylko główną wersję, na przykład:
Teraz po uruchomieniu
java -version
zobaczysz:Dodaj
export JAVA_HOME…
linię do pliku inicjującego powłokę.W przypadku Bash (jak stwierdził antonyh ):
Dla ryb (jak stwierdził ormurin)
źródło
export
liniiexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
- zauważ również, że java_home pozwala na częściowe dopasowania, więc nie musisz dołączać pełnej wersji, ponieważ znajdzie ona najnowszą zainstalowaną. Ułatwia to aktualizacje.Ta odpowiedź jest próbą rozwiązania: jak kontrolować wersję Java w całym systemie (nie tylko w aktualnie uruchomionej powłoce), gdy kilka wersji JDK jest zainstalowanych do celów programistycznych na macOS El Capitan lub nowszym (Sierra, High Sierra, Mojave) . O ile wiem, żadna z obecnych odpowiedzi tego nie robi (*).
Jako programista używam kilku JDK i chcę łatwo przełączać się między nimi. Zwykle mam najnowszą stabilną do ogólnego użytku, a drugą do testów. Ale nie chcę, aby system (np. Kiedy uruchamiam IDE) korzystał z najnowszej wersji „wczesnego dostępu”, którą mam na razie. Chcę kontrolować domyślne ustawienia systemu, które powinny być najnowszą stabilnością.
Poniższe podejście działa z Javą 7 do 12 przynajmniej (wczesny dostęp w momencie pisania tego tekstu), z Oracle JDK lub OpenJDK (w tym kompilacje AdoptOpenJDK wyprodukowane po połowie października 2018 r .).
Rozwiązanie bez narzędzi innych firm:
/Library/Java/JavaVirtualMachines
. System domyślnie wybierze najwyższą wersję.Contents/Info.plist
wybrać JDK, zmień jego nazwę naInfo.plist.disabled
. Tego pakietu JDK można nadal używać, gdy$JAVA_HOME
wskazuje na niego, lub jawnie odwoływać się do niego w skrypcie lub konfiguracji. Zostanie po prostu zignorowany przezjava
polecenie systemu .Program uruchamiający system użyje JDK z najwyższą wersją spośród tych, które mają
Info.plist
plik.Pracując w powłoce z alternatywnym JDK, wybierz metodę spośród istniejących odpowiedzi (
jenv
lub niestandardowych aliasów / skryptów/usr/libexec/java_home
, itp.).Szczegóły dochodzenia w tej treści .
(*) Bieżące odpowiedzi są albo przestarzałe (nie są już ważne dla macOS El Capitan lub Sierra), albo dotyczą tylko jednego JDK, lub nie odnoszą się do całego systemu. Wielu wyjaśnia, jak to zmienić
$JAVA_HOME
, ale wpływa to tylko na bieżącą powłokę i to, co jest z niej uruchamiane. Nie wpłynie to na aplikację uruchomioną z programu uruchamiającego system operacyjny (chyba że zmienisz odpowiedni plik i wylogujesz się / zalogujesz, co jest uciążliwe). To samo dotyczy jenv, jest fajne i wszystko, ale o ile mogę powiedzieć, po prostu zmienia zmienne środowiskowe, więc ma takie same ograniczenia.źródło
jenv
ani nieJAVA_HOME
jesteśmy w stanie ustawić systemowej wersji Java, tj. Tej , której użyłaby Eclipse./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/
. Najwyraźniej jest to ten, który uruchomi nowe okienko Preferencji - to jedyny wyjątek, jaki znalazłem dla mojego rozwiązania: że thingy nadal będzie korzystać z JDK9 (najnowsza wersja, którą zainstalowałem), ale żadna inna aplikacja Java tego nie robi. ”Dodając do powyższych odpowiedzi, umieściłem następujące wiersze w moim
.bash_profile
(lub.zshrc
w systemie MacOS 10.15+), co sprawia, że przełączanie jest bardzo wygodne (w tym komentarz @ elektromin dla java 9):Po wstawieniu uruchom
$ source .bash_profile
Mogę przełączyć się na Javę 8, wpisując następujące polecenie:
źródło
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"
a następnie pisaniej10
pozwala na powrót do aktualnej wersji Java (w moim przypadku Java 10)nvm
przełączania wersji Java, ale akronimjvm
oznacza już coś innego :)/Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
Mała funkcja ryb oparta na / usr / libexec / java_home
Jeśli nie używasz ryb, możesz zrobić coś podobnego w bash:
Następnie, aby przełączać się między Javami:
ref: https://gist.github.com/kenglxn/1843d552dff4d4233271
źródło
export JAVA_HOME=(/usr/libexec/java_home $argv)
zamiast drugiej linii twojejjhome
funkcji.Jest to trochę trudne, ale spróbuj wykonać kroki opisane w Instalowanie Java na OS X 10.9 (Mavericks) . Zasadniczo musisz zaktualizować swój alias do
java
.Krok po kroku:
Po zainstalowaniu JDK 1.7 musisz to zrobić
sudo ln -snf
, aby zmienić link na bieżącyjava
. Aby to zrobić, otwórz Terminal i wydaj polecenie:Zauważ, że katalog
jdk1.7.0_51.jdk
może ulec zmianie w zależności od zainstalowanej wersji zestawu SDK.Teraz musisz ustawić
JAVA_HOME
punkt, w którymjdk_1.7.0_xx.jdk
został zainstalowany. Otwórz ponownie Terminal i wpisz:Możesz dodać
export JAVA_HOME
powyższą linię.bashrc
do pliku, aby mieć java na stałe w swoim terminaluźródło
JAVA_HOME
zostanie wyeksportowana w bieżącej sesji terminalu. Możesz dodać go do naszego,.bashrc
jeśli chcesz. Dostosuję polecenia do ostatniej wersji.Użyj jenv to łatwy sposób.
1. zainstaluj jenv
2.Skonfiguruj jenv
3. Połącz ścieżkę jdk
4.Wszystko jest gotowe
polecenie przełączania:
ustaw domyślne:
źródło
zainstaluj JDK, nie tylko JRE
daje
Kolejny
TextEdit wyświetli pustą stronę, którą możesz wypełnić.
dodaj do dokumentu:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
w terminalu:
spróbuj wykonać polecenie:
javac -version
powinien generować:
źródło
tl; dr
Dodaj linię:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
do pliku
~/.bash_profile
(zamień plik jdk1.8.0_144.jdk na pobraną wersję)
następnie
source ~/.bash_profile
źródło
Użyj jenv, to jest jak menedżer środowiska Java. Jest bardzo łatwy w użyciu i czyszczeniu
W przypadku komputerów Mac wykonaj następujące czynności:
Instalacja: Jeśli używasz bash, wykonaj następujące kroki:
Dodaj pożądane wersje JVM do jenv:
Sprawdź zainstalowane wersje:
Ustaw wersję Java, której chcesz używać:
źródło
umieścić to w pliku ~ / .profile i używać go w terminalu jak tak
setjdk 1.8
,setjdk 1.7
,setjdk 9
etc etc ...Jeśli nie masz
removeFromPath
, to:function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }
źródło
Cztery proste kroki przy użyciu terminala dla osób korzystających z domyślnego procesu .. :)
echo $JAVA_HOME
daje ci aktualny dom Java. Na przykład:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
zabierze Cię do folderu, w którym normalnie instalujesz jdks (może być inaczej dla twoich komputerów)ls
pokazuje dostępne foldery (zwykle będą miały numery wersji, na przykładjdk1.8.0_191.jdk openjdk-11.0.2.jdk
:)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
zmieni dom Javaźródło
dodaj następujące polecenie do
~/.zshenv
plikuźródło
MacOS El Capitan lub nowszy wybierze wyższą wersję JDK dostępną w
/Library/Java/JavaVirtualMachines
, więc aby obniżyć wersję, możesz zmienić nazwę plikuInfo.plist
na inną,Info.plist.disabled
tak aby system operacyjny wybrał poprzednią wersję.źródło
Z oficjalnej strony Apple java_home (1) :
źródło
Najpierw dowiedz się, gdzie przechowujesz zmienne środowiskowe
Kroki, aby skonfigurować zmienną środowiskową: -
Teraz skonfiguruj zmienne środowiskowe w swoim pliku
za. W przypadku pliku emacs.profile możesz użyć tego linku LUB zobacz zrzut ekranu poniżej
b. Do konfiguracji profilu ZSH -
Wszystko gotowe Teraz możesz łatwo uaktualnić lub zdegradować wersję JAVA.
źródło
Skrypt JDK Switch
Dostosowałem odpowiedź z @Alex powyżej i napisałem następujące, aby naprawić kod dla Java 9.
Przełącz się na Javę 8
Przejdź do Java 9
źródło
Jeśli nadal nie możesz go ustawić. za pomocą tego polecenia.
eksport JAVA_HOME =
/usr/libexec/java_home -v 1.8
musisz użyć tego.
eksport JAVA_HOME =
$(/usr/libexec/java_home -v 1.8)
na pewno zadziała.
źródło
Możesz dodać go do swojego .bash_profile, aby domyślnie ustawić wersję.
źródło
Jeśli używasz ryb i używasz Maca i chcesz mieć możliwość przełączania się między JDK, to poniżej działa dla mnie na Macu.
Odpowiedź @ kenglxn nie zadziałała dla mnie i zorientowałem się, że bcos nie ustawił -g, co jest globalne!
Umieść poniżej w ~ / .config / fish / config.fish
Aby wiedzieć, którą wersję / wersję podrzędną zainstalowałeś, możesz:
źródło
Jeśli masz wiele wersji i chcesz uruchomić coś przy użyciu określonej wersji, skorzystaj z tego przykładu:
źródło
Na podstawie odpowiedzi @markhellewell stworzyłem kilka funkcji aliasu, które zrobią to za Ciebie. Po prostu dodaj je do pliku startowego powłoki
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
źródło
Oto jak to robię na moim Linuksie (kolega Ubuntu / Mint). Myślę, że Mac może to zrobić podobnie.
Zainstaluj i skonfiguruj
Kroki:
na przykład
/mnt/star/program/java/jdk-1.8
np.
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Tak
/mnt/star/program/java/java
jest miękkie łącze.JAVA_HOME
w skrypcie startowym.Można użyć pliku podobnego
/etc/profile.d/eric.sh
lub po prostu użyć~/.bashrc
.na przykład
JAVA_HOME=/mnt/star/program/java/java
java -version
powinien wydrukować wersję Java.na przykład
/mnt/star/program/java/jdk-11
~/.bashrc
zdefiniuj zmienną dla różnych wersji Java.na przykład
_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
zdefiniuj polecenie przełączania wersji Java.na przykład
## 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
aby zmiany zostały wprowadzone.Polecenia - z powyższej konfiguracji
Polecenia:
jv11
Przełącz się na Javę 11
jv8
Przełącz się na Javę 8
jvd
Przełącz na domyślną wersję Java, która jest oznaczona przez
_E_JAVA_HOME_D
zdefiniowaną powyżej.jv
Pokaż wersję Java.
Przykładowe dane wyjściowe:
Mechanizm
JAVA_HOME
.Porady
Podczas ręcznego instalowania jdk na moim komputerze zachowuję wersję pomocniczą, a następnie tworzę miękkie łącze z wersją główną, ale bez wersji dodatkowej.
np.
// to jest rzeczywisty katalog,
jdk1.8.0_191
// to jest miękki link do
jdk1.8.0_191
jdk-8
// to jest miękki link do
jdk-8
lubjdk-11
java
Definiuję alias polecenia w
~/.bashrc
, ale zmienną definiuję w osobnym pliku.Używam
~/.eric_var
do definiowania zmiennych i~/.bashrc
będę je pozyskiwał (npsource $HOME/.eric_var
.).źródło
Prostym sposobem na dołączenie osobno zainstalowanego JDK na podanej liście
/usr/libexec/java_home -V
jest dowiązanie katalogu w następujący sposób:Na przykład, aby zarejestrować JDK dołączony do Android Studio (1.8.0_152 w momencie pisania), użyj:
Teraz
java_home
wyświetli listę JDK poniżejMatching Java Virtual Machines
i możesz ją wybrać zgodnie z powyższym opisem.źródło
Zrobiłem to dla lokalnego terminalu z
źródło
To narzędzie wykona za Ciebie pracę:
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
Jest to prosta JavaOne, której można użyć do zdefiniowania bieżącej wersji Java. Wersja może być używana w powłoce, która jest otwierana po wybraniu wersji w narzędziu.
źródło
ZBYT ŁATWE ROZWIĄZANIE: Co za ból głowy - to było szybkie, łatwe rozwiązanie, które działało dla mnie.
Mac OS Sierra Wersja 10.12.13
Użyj klawiszy skrótu: CMD + SHIFT + G - wpisz „/ Library /”
Znajdź folder JAVA
Kliknij prawym przyciskiem myszy folder Java = Przenieś do kosza (wymagane hasło)
Zainstaluj: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Pobierz JavaScript SDK
źródło