Zainstalowałem Java 7 na Mac OS X, ale Terminal nadal używa wersji 6

391

Zainstalowałem JDK 7u7 pobrany ze strony internetowej Oracle. Ale po instalacji terminal nadal wyświetla wersję Java 6

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

jakiś pomysł, dlaczego java 7 się nie pojawia?

Odp .: OK, problem został rozwiązany. Oto odpowiedź: znalazłem, że mój terminal ma .bash_profile, a zmienna główna Java jest ustawiona na 1.6

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

To jest linia powodująca problem za każdym razem, gdy otwieram nowe okno terminala. Wystarczy usunąć tę linię, aby rozwiązać problem. Nadal musisz postępować zgodnie z tym, co powiedział @aleroot, ale jeśli to nie działa, sprawdź plik ustawień .bash_profile (lub .bashrc), aby sprawdzić, czy wcześniej wyeksportowałeś jakąkolwiek wersję Java.

Yang
źródło
23
Miałem ten problem, ale zaktualizowałem tylko środowisko JRE, a nie JDK. Kiedy zaktualizowałem JDK, pokazał poprawną wersję.
Paul Maserrat,
Przeprowadź migrację, aby zapytać inaczej?
Nakilon,
14
Zwrócenie uwagi na komentarz @ Mazzy jest łatwym błędem. Pobranie JRE v7 spowoduje pojawienie się wersji 7 podczas uruchamiania sprawdzania wersji online lub panelu sterowania Java, ale podczas wywoływania Javy z wiersza poleceń uruchomisz starszą wersję z wcześniej zainstalowanego JDK. Sprawdź dokładnie, czy zainstalowałeś JDK, a nie tylko JRE.
Cam Jackson
1
Najlepszym sposobem na rozwiązanie tego problemu jest zastosowanie export JAVA_HOMEpodejścia opisanego tutaj w nieco bardziej elastyczny sposób.
Brad Parks,
5
Pozwólcie, że podkreślę to wielkimi literami: WIELU LUDZI LĄDUJĄCYCH NA TEJ STRONIE BĘDĄ PO PROSTU POBRAĆ I ZAINSTALOWAĆ NAJNOWSZY JDK. PANEL STEROWANIA JAVA AKTUALIZUJE JRE.
Walter Tross,

Odpowiedzi:

64

Ponieważ musisz wprowadzić w panelu Preferencje Java i oflagować tylko JVM 7 w ten sposób:

Preferencje Java

Aby łatwo i szybko otworzyć panel Preferencje Java w Mac OS X, możesz po prostu wywołać wyróżnienie za pomocą +SPACE i wpisać Preferencje systemowe , które pojawią się w ostatnim wierszu okna.

Aleroot
źródło
3
tak, znalazłem to. ale wciąż wersja 1.6 w terminalu, czy muszę się restartować czy coś takiego
Yang
1
Ten panel nie istnieje już w wersji 10.8. Alternatywy?
Pepijn,
68
@Pepijn Panale jest historią od Mac OSX 10.8.2 i tak naprawdę nie ma już takiej potrzeby. Zamiast tego musisz użyć export JAVA_HOME=`/usr/libexec/java_home -v 1.7`przełącznika na najnowszą wersję JDK Java 7 od Oracle.
Uwe Günther,
23
Myślę, że w pewnym momencie pozbyli się Preferencji Java. Spotlight nie znalazł na moim pudełku. Uruchamianie 10.8.5.
szybka zmiana w
1
Dokładną lokalizację JAVA_HOME można znaleźć w -> Preferencje systemowe -> Java. Kliknij kartę „Java”. Kliknij widok. Zmienna Ścieżka pokazuje Twój JAVA_HOME (kafelek / Strona główna).
agaase
298

Instalator Oracle umieszcza java wewnątrz /Library/Internet Plug-Ins/JavaAppletPlugin.plugin. I nie zastępuje /usr/bin/java. Więc jeśli wydasz

whereis java

w terminalu zwróci / usr / bin / java. (co z kolei wskazuje na /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java, która jest wersją Apple 1.6).

Jeśli więc chcesz użyć nowej wersji Java, zamień /usr/bin/javadowiązanie symboliczne, tak aby wskazywało na /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java:

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin
Ákos
źródło
22
Oto polecenie: sudo ln -s / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin
Binarian 11.11.2013
11
Dowodzenie Viktora działa. Być może jednak będziesz musiał upewnić się, że usunąłeś istniejące łącze symboliczne javarm /usr/bin/java
Matt Florence,
7
Dopóki ludzie Oracle nie poprawią tego procesu, oto HOWTO całego procesu instalowania javy w systemie OSX, aż do tego ostatniego kroku dowiązania symbolicznego: gist.github.com/johan/10590467
ecmanaut
61
mamrm: /usr/bin/java: Operation not permitted
Aditya
37
Lubexport PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Mick
114

Zainstaluj JDK 7, a ten problem sam się rozwiąże.

Koniecznie pobierz pakiet Java Development Kit (JDK), który zawiera kompilatory i podobne rzeczy, a nie tylko środowisko Java Runtime Environment (JRE).

BrainO2
źródło
7
zainstaluj pełny JDK, nie tylko JRE.
BrainO2
5
-1 To nie pomogło. Instalacja JDK nie zmienia się /usr/bin/javaani JAVA_HOME. Ale ustawienie JAVA_HOMEpomogło.
Andrii Nemchenko
3
Potwierdzono OK w OSX 10.9.4. Nie zmienia linku / usr / bin, zmienia rzeczy pod nim. Tak więc /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java # But: /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -version java version "1.7.0_67"
Joe Atzberger
1
Pracował także dla JDK 1.8 - (zainstaluj JDK 1.8 zamiast JRE 1.8)
Mark Chackerian
Próbowałem zainstalować Javę 1.8, ale to nie działało na El Capitan. Instalacja 1.7 rozwiązała moje problemy.
SPRBRN
104

vi ~/.bash_profile

Dodaj

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

To mówi Twojemu /usr/bin/javacelowi łącza, aby używał najnowszego pakietu Java 7 zainstalowanego w

/Library/Java/JavaVirtualMachines/

Tak więc dla JDK 1.7.0_17 JAVA_HOMEbyłoby:

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

Uwaga: Ostatnio wprowadzono wiele zmian w tym obszarze, aby przenieść Mac OS X z własnych zintegrowanych pakietów Java firmy Appels na pakiety Java oparte na Oracle. Powyższe rozwiązanie działa poprawnie od systemu Mac OS X 10.8.2

Uwe Günther
źródło
4
+1 dla tej odpowiedzi, która jest imo poprawna, ponieważ działa na wersjach Mac OS przed i po usunięciu „Preferencji Java”, a pokazując opcję „-v” pokazuje, jak można korzystać z java 6, nawet jeśli java 7 jest zainstalowany (to jest to, czego chcę). Dlatego na moim komputerze Mac z systemem Lion (10.7.5) używam tego samego polecenia z „-v 1.6”. Jest to bardzo ważne, ponieważ potrzebuję Java 6, a Oracle nie zapewnia jednego dla Mac OS - tylko Java 7, a to pozwala mi korzystać z zainstalowanej JAva 6, nawet jeśli Java 7 jest zainstalowana.
Rabarbar
1
Ponadto, aby uczynić go bardziej elastycznym: mikemainguy.blogspot.com/2014/11/…
Mainguy
dodatkowe informacje można znaleźć tutaj dla tej niesamowitej odpowiedzi!
Brad Parks,
To działało dla mnie w Sierra 10.12 po zainstalowaniu 1.8 JKD eksport działał, zmieniając 1,7 na 1,8. Świetna odpowiedź za pomocą narzędzia java_home !!
Scott Byers
56

W moim przypadku problem polegał na tym, że Oracle instalował go w innym miejscu niż byłem przyzwyczajony.

Pobierz z Oracle: http://java.com/en/download/mac_download.jsp?locale=en

  1. Sprawdź, czy jest poprawnie zainstalowany, sprawdzając w Prefiksach systemu:

    • Command-Space, aby otworzyć Spotlight, wpisz „Preferencje systemowe”, naciśnij Enter.
    • Kliknij ikonę Java w dolnym rzędzie. Po otwarciu Panelu sterowania Java kliknij kartę „Java”, „Wyświetl ...” i sprawdź, czy instalacja działała. Możesz tam również zobaczyć „Ścieżkę”, którą możesz wpisać w poniższe polecenia, jeśli są one inne niż moje.
  2. Sprawdź, czy wersja jest zgodna z oczekiwaniami (w razie potrzeby sub w ścieżce):

    / Biblioteka / Internet \ Wtyczki / JavaAppletPlugin.plugin / Contents / Home / bin / java -version

  3. Utwórz link z / usr / bin / java do nowej instalacji

    sudo ln -fs / Biblioteka / Internet \ Wtyczki / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin / java

  4. Sanity sprawdź swoją wersję:

    java -version

dale.hamill
źródło
Pracowałem również dla mnie, próbowałem też innego wyjaśnienia, ale w Maverix nie ma panelu, w którym można wybrać numer wersji, a także zmiana pliku .bash_profile nie zadziałała. DOSKONAŁY!
Alex Cio
Eclipse nie widzi wersji 1.7 pod kompilatorem
Laser Hawk
Pracował dla mnie! Przed = 1.6.0_65 i Po użyciu tego rozwiązania = 1.7.0_60 .... dzięki! :)
matematyka
ale zaćmienie daje błąd jak nadal „biblioteka współdzielona jvm nie zawiera symbolu jni_createjavavm” .... :(
matematyka
1
Dzięki za pomoc! Nic poza tym nie działało. Uruchamianie Yosemite
LordZardeck
33

Wystąpił podobny problem z tym, że terminal nie aktualizował wersji Java, aby pasowała do wersji zainstalowanej na komputerze Mac.

Nie było problemu z ustawieniem zmiennej środowiskowej JAVA_HOME

Wymyśliłem tymczasowe i nieco bolesne, ale działające rozwiązanie.

W tobie .bash_profile dodaj linię:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"

(To jest ścieżka na moim komputerze, ale może być inna na twojej, upewnij się, że ją masz. Ścieżki powinny pasować do / Library / Java / JavaVirtualMachines /)

bieg source ~/.bash_profile

Jak wspomniałem, jest to tymczasowe rozwiązanie wspomagania pasma, ponieważ ścieżka do domu Java jest mocno zakodowana. Naprawdę nie ma sposobu, aby ustawić ścieżkę, aby uzyskać najnowsze, ponieważ to właśnie Apple już robi dla terminala, a problem polega na tym, że zmienna środowiskowa Apple java_home nie jest aktualizowana.

Derek
źródło
4
Katalog jest pusty. $ ls / Library / Java / JavaVirtualMachines /
Pepijn
1
Prawdopodobnie masz problem z tym, gdzie zainstalowałeś java 7. Przejdź na stronę Oracle . Kliknij link „Java SE Development Kit 7u11”, zaakceptuj umowę licencyjną i pobierz „jdk-7u11-macosx-x64.dmg”. Użyj dmg, aby zainstalować Javę 7, co powinno umieścić ją w katalogu JavaVirtualMachines.
Derek
To jedno rozwiązanie dla Mojave 10.14.1 na początku 2019 r.
bitów i
27

Od czasu El Capitan usunięcie /usr/bin/javadowiązania symbolicznego jest trudne ze względu na wprowadzenie nowej zasady „rootless”.

Dlatego po prostu dodałem ścieżkę do najnowszej wersji Java (w moim przypadku jest to /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin) do PATHmojego .bashrcpliku:

# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH

Aby ponownie załadować .bashrcplik dla bieżącej sesji, uruchom source ~/.bashrcw powłoce. Musisz to zrobić tylko w przypadku sesji rozpoczętych przed zmianą .bashrcpliku.

Teraz, gdy używasz javaw powłoce , używana jest najnowsza wersja .

TabeaKischka
źródło
1
To szczególne rozwiązanie działało dla mnie na moim Mac OS X el Capitan. Nie ominąłem zabezpieczeń skonfigurowanych na el capitan, ale zainstalowałem java w wersji 1.8. Eksportowanie JAVA_HOME = / moja konkretna ścieżka itp. Etc / nie działało (po przejściu do preferencji i zlokalizowaniu ścieżki do 1.8). Uwaga: 1.6 jest nadal zainstalowany. Musiałem utworzyć plik .bashrc i ustawić ścieżkę zgodnie z opisem tutaj. Uruchomiłem java -version i shazzam! zadziałało.
umbregachoong
Tak bardzo chciałem, żeby to zadziałało, kiedy jestem na El Capitan i nie mogę znaleźć innego rozwiązania do działania. Utworzyłem plik „.bashrc” i dodałem wiersz jak wyżej, ale jeśli napiszę „java -version”, nadal otrzymuję 1.6. Coś, co mogłem przeoczyć?
noLongerRandom
@ user3810073 być może trzeba uruchomić source .bashrc, aby ponownie załadować zawartość .bashrc
TabeaKischka
Pracował dla mnie. Dodałem wiersz do .bash_profile (w katalogu osobistym mojego użytkownika), a następnie źródłowy .bash_profile. Potem wersja java dała mi najnowszą. Dzięki!
mrmuggles
Można to również osiągnąć poprzez symlinkowanie w /usr/local/binnastępujący sposób: sudo ln -sf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" /usr/local/bin/java To założenie /usr/local/binjest wcześniej /usr/binw twoim, $PATHco powinno być domyślnie.
lifeofguenter
21

Dla mnie najłatwiejszym i najczystszym sposobem jest zainstalowanie Java za pomocą homebrew, jak opisano tutaj:

https://stackoverflow.com/a/28635465

brew update
brew cask install java
Bernhardt Scherer
źródło
Proste i czyste rozwiązanie !. Działa jak urok.
Rahul Shukla
2
To jedyne rozwiązanie, które zaktualizowało zarówno java, jak i javac. Dzięki!
ldanilek
Działa jak urok :) Wielkie dzięki
Mohamed Saleh
spowoduje to zainstalowanie najnowszej wersji Java, a nie Java7
Ivo
13

Podstawowy problem: /usr/bin/javawskazuje na ten, który początkowo zapewnia sam OSX ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) Musimy wskazać na ten pobrany przez instalator JDK. Poniższe kroki dotyczą OSX 10.10.4 Yosemite.

  • Otwórz Preferencje systemowe -> wybierz Java. Otwiera się okno Java.
  • Kliknij kartę Java u góry. Kliknij przycisk „Widok”.
  • Karta Ustawienia środowiska wykonawczego programów Java zostanie otwarta w następujący sposób: Karta Ustawienia JRE
  • Kliknij dwukrotnie ikonę Path element i skopiuj ścieżkę (cmd + c). Jest to najnowszy zainstalowany przez instalatora / aktualizatora JDK. W moim przypadku ścieżka była/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • Otwórz terminal. W tym kroku zamierzamy wskazać (łącze symboliczne, ln -spolecenie) system binarny Java na najnowszy, który odkryliśmy w poprzednim kroku. Uruchom poniższe polecenie:

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

Otóż ​​to. Aby to sprawdzić, wystarczy uruchomić java -version terminal. Powinien wypisać najnowszą wersję, do której został zainstalowany / zaktualizowany.

Aswin Kumar
źródło
2
Działa dla mnie, tyle że musiałem dodać -f do polecenia ln. W przeciwnym razie, jeśli nie powiedzie się z ln: / usr / bin / java: Plik istnieje
Dale
w moim przypadku usr/local/binusr/bin
użyłbym
Otrzymuję komunikat „Operacja niedozwolona”.
Shardul
Uzyskanie ścieżki w ten sposób jest idealne. Następnie mogłem go wyeksportować i ponownie załadować bashrc, aby rozwiązać problem z wersją. W moim przypadku migrowałem z wersji 7 do 8 na Mojave 10.14.1
bitów i
12

W terminalu możesz wykonać następujące polecenie:

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

I to zastępuje java old nowym.

Amulya Kashyap
źródło
1
Dziwnie to zastępuje, ale jeśli zamknę terminal i otworzę ponownie, znowu pokazuje starszą wersję
Parth Patel
to prawda. tak dziwne. bardzo tymczasowe rozwiązanie
użytkownik
1
dodaj to do pliku .bashrc, a następnie source ~/.bashrc
ustaw na
10

Zrobiłem

export JAVA_HOME=`/usr/libexec/java_home`

i to naprawiło mój problem z Javą 8.

przed:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

po:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Climbs_lika_Spyder
źródło
1
To /usr/libexec/java_homebardzo dobra wskazówka, dzięki!
Raffi,
1
Wykonałem pracę po przeczytaniu ton możliwych rozwiązań! Dzięki :)
ronnyrr
7

http://www.java.com/en/download/faq/java_mac.xml to miłe miejsce do zrozumienia, podczas gdy Apple przestaje wspierać Javę, dlaczego Preferencje Java już nie istnieją i polegają na System_Preferences => Java = > Java, jeśli zainstalowana jest Java 7 z Oracle.

rozkoszować się
źródło
2
To dobra informacja, ale naprawdę powinieneś podać więcej szczegółów niż tylko link. Jeśli link zostanie zerwany w przyszłości, twoja odpowiedź naprawdę nie będzie bardzo przydatna.
psubsee2003
7

Czy mogę polecić Ci narzędzie Jenv?

Umożliwi to przełączanie się między zainstalowanymi maszynami JVM w dowolnym momencie.

Po prostu jako:

jenv global oracle-1.7

następnie do celów testowych:

jenv global oracle-1.6

I masz znacznie więcej dostępnych poleceń.

TitiMoby
źródło
+1 za tę odpowiedź, ponieważ możesz użyć Homebrew, jeśli używasz go już w systemie OS X. Mówię o wiele czystsze niż inne. Więcej informacji tutaj: jenv.be
piku
6

Kodowanie ścieżki JAVA_HOME może nie być najlepszym pomysłem. Program /usr/libexec/java_homenarzędziowy działa dla mnie na Mac OSX Lion 10.7.5 i JDK 1.7.0_13. Według strony podręcznika, ma być używany ze starym panelem Apple Java Preferences, ale wydaje się, że działa z zamiennikiem dostarczonym przez Oracle (Java Control Panel). Na przykład uruchomione /usr/libexec/java_home -Vwyświetla listę wszystkich zainstalowanych JDK (zarówno 1.6. *, Jak i 1.7. *) Na moim komputerze.

Tak więc, jak omówiono w innych wątkach (np. Co powinienem ustawić JAVA_HOME na OSX ), nadal zalecałbym dodanie następującej linii do twojego .bash_profile:

export JAVA_HOME=$(/usr/libexec/java_home)
zagyi
źródło
Zgadzam się z twoim komentarzem tutaj, ponieważ jest to najlepsza praktyka, ale z jakiegoś powodu zmienna środowiskowa java_home nie jest ustawiona poprawnie, dlatego to nie działa. Wierzę, że w najnowszej aktualizacji firmy Apple twoja sugestia jest domyślnie domyślną akcją dla JAVA_HOME w terminalu i innych powiązanych aplikacjach.
Derek
@Derek Co dokładnie masz na myśli mówiąc, że „zmienna środowiskowa java_home nie jest ustawiona poprawnie”? Według tego artykułu/usr/libexec/java_home narzędzie jest przeznaczone do pracy również z Java 7 wersjach, i zwraca ścieżkę do większości daty up-to-zainstalowanego JDK. Działa idealnie na moim komputerze.
zagyi
1
tak, powinno działać, ale nie dotyczy osób z problemem, o którym wspominał pepijin.
Derek
6

To szalone! W jaki sposób Oracle udostępnia instalator, który niczego nie instaluje !?

W każdym razie dla mnie było to:

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

gdzie 1.8.0_31 to zainstalowana wersja Java ...

Kevin Parker
źródło
Dlaczego Apple nie zapewnia właściwej metody?
jwilleke,
6

W przypadku, gdy masz kilka wersji Java na swoim komputerze i chcesz wybrać go dynamicznie w czasie wykonywania, tj. W moim przypadku mam dwie wersje:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

Możesz je zmienić, modyfikując zawartość / etc / profile. Po prostu dodaj (lub zmodyfikuj) następujące dwa wiersze na końcu pliku:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

W moim przypadku powinienem wyglądać następująco:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Po zapisaniu pliku uruchom source /etc/profile go i powinien działać. Oto wyniki, gdy odpowiednio używam pierwszej i drugiej opcji:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

Proces jest podobny, jeśli folder Java znajduje się w różnych lokalizacjach.

nxhoaf
źródło
5

Proste rozwiązanie

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Mick
źródło
Niesamowite. To rozwiązanie uczyniło mój dzień. Wielkie dzięki Mick
użytkownik
3

Myślę, że możesz spróbować zainstalować jdk, a nie jre. Po zainstalowaniu jdk, java w / usr / bin / java zostanie zastąpiona, a cała biblioteka będzie działać poprawnie.

DDDrop
źródło
3

Jeśli masz zainstalowany program Homebrew, możesz zainstalować przełącznik Java, aby szybciej zmienić domyślną wersję Java

brew tap andycillin/tap
brew install java-switcher

Następnie możesz użyć tylko jednego polecenia, aby przełączyć domyślną wersję Java.

java-switcher 1.7

lub

java-switcher 10
Andy Tran
źródło
Dzięki, Andy, to było łatwe.
GreenROBO,
1

Możesz uruchomić to polecenie, aby znaleźć wersję Java, która znajduje się w / Library / Internet Plugins /:

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
Hefewe1zen
źródło
1

Dzieje się tak, ponieważ Twój .bash_profile nie odzwierciedla zmian. Aby to odzwierciedlić, użyj następującego polecenia

$ source .bash_profile
Raghav Sharma
źródło
0

Ponieważ nie spotkałem się z tym problemem, przeczuwam -

Czy możesz spróbować:

Gdzie miękki link „java_home” wskazuje na:

ls -lrt /usr/libexec/java_home

Dane wyjściowe: (Stunted) lrwxr-xr-x java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home

** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions Mój MAC Wytwarza następujące elementy:

 lrwxr-xr-x CurrentJDK ->
 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**

 lrwxr-xr-x   Current -> A
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4.2 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4 -> CurrentJDK

Na tej podstawie możemy uzyskać wskazówkę, aby przejść dalej?

użytkownik 1428716
źródło
przeczytaj kilka komentarzy w Internecie na temat problemów z Javą 7 w systemie MAC-OSX i pokaże, że są one zablokowane . Zobacz : grep.dk/tag/xprotect-meta-plist . W XProtect.meta.plist mam Java 7 i Flash na liście. Do czasu gry w Vulnerability Police
użytkownik1428716
0

Rozwiązałem ten problem, ponownie instalując Yosemite, a następnie sprawdzając wersję java na terminalu (java -version) i (javac -version). Działa to doskonale teraz. Nie zmienia się na java 7, ponieważ wersja 6 nadal jest obecna (polecenie + n ) libray> java> javavirtualmachine> twoja aktualna wersja javac. musisz zaadresować do strony domowej java.

AJAY
źródło
0

Rozwiązałem ten problem z sudo rm /usr/bin/java

Pobrałem i zainstalowałem ostatnie środowisko Java SE Runtime Environment: http://www.oracle.com/technetwork/java/javase/downloads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/javanie działało dla mnie, ponieważ mam Operation not permitted. El Capitan chroni teraz niektóre katalogi systemowe w trybie „rootless” (inaczej System Integrity Protection). Dotyczy to macOS Sierra i prawdopodobnie nowych wersji macOS w dającej się przewidzieć przyszłości.

Charles Hamel
źródło
0

Instalacja za pośrednictwem rozproszonego JDK DMG ze strony Oracle automatycznie aktualizuje wszystko dla mnie. Widziałem (w El Capitan) aktualizację za pomocą System Preferences > Javaaktualizacji, ale nie odzwierciedlają one wiersza poleceń. Instalacja za pomocą DMG wykonuje to zadanie.

Santanu Karar
źródło
0

Sprawdź zainstalowane wersje JDK:

$ ls  /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk  jdk1.8.0_91.jdk

Teraz w ~/.bashrceksporcie z JAVA_HOMEpodaniem wersji:

if [ -e /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi

Źródło pliku bashrc, a wersja Java zostanie zaktualizowana:

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
Miguel Mota
źródło
0

Najnowsza w 100% skuteczna metoda:


w bash:

vim ~/.bash_profile

Dodaj

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq zapisać
  • cmd + q force quit bash
  • ponownie otwórz bash i wpisz java -version

Ale tak naprawdę ta ścieżka wskazuje na jre, a nie jdk.

Jeśli chcesz wskazać ścieżkę do JDK, potrzebujesz

  1. Upewnij się, że zainstalowałeś JDK ani pojedyncze środowisko wykonawcze JRE
  2. zastąp poprzednią ścieżkę do PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk", możesz przejść do, /Library/Java/JavaVirtualMachinesaby upewnić się, że zainstalowałeś oczekiwaną wersję JDK.
Liangli
źródło