Chcę zainstalować Javę OpenJDK na Mac OSX i sprawić, by działała razem z innymi JDK, ponieważ jest to nowsza wersja. Obecnie ściągnąłem plik tar.gz i umieściłem go na swojej ścieżce, ale jest to trudne do utrzymania.
Jedyną inną instalacją, którą znalazłem, która robi więcej rzeczy automatycznie, jest instalacja przez beczkę Homebrew. Wygląda na to, że tylko bieżąca wersja:
brew cask info java
Przedstawia:
java: 13,33: 5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/
Więc mogę go zainstalować stamtąd, ale co wtedy? Czy utknąłem tylko z nową wersją?
Odpowiedzi:
Uwaga: Rozwiązania te działają dla różnych wersji Java, w tym Java 8 i nowej Java 13, oraz dla wszystkich innych poprzednich wersji Java objętych wymienionymi menedżerami wersji. Obejmuje to alternatywne JDK od OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal i innych. Łatwo pracuj z Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 i Java 13!
Masz kilka opcji instalacji i zarządzania przełączaniem JDK. Instalacja może być wykonana przez Homebrew, SDKMAN , Jabba lub instalację ręczną. Przełączania można dokonać za pomocą JEnv , SDKMAN , Jabba lub ręcznie przez ustawienie
JAVA_HOME
. Wszystkie są opisane poniżej.Instalacja
Najpierw zainstaluj Javę przy użyciu dowolnej metody, w tym Homebrew, SDKMAN lub ręcznej instalacji pliku tar.gz. Zaletą instalacji ręcznej jest to, że lokalizację JDK można umieścić w znormalizowanej lokalizacji dla systemu Mac OSX.
Zainstaluj za pomocą SDKMAN
Jest to prosty model, ponieważ obsługuje zarówno instalację, jak i przełączanie wersji, z zastrzeżeniem, że instaluje JDK w niestandardowym katalogu.
< patrz poniżej „Instalowanie i przełączanie wersji za pomocą SDKMAN” >
Zainstaluj za pomocą Jabba
Jest to również prosty model, w którym zarówno instalacja, jak i zmiana wersji są obsługiwane przez to samo narzędzie. Instalacje są wykonywane w niestandardowym katalogu.
< patrz poniżej „Instalowanie i zmiana wersji za pomocą Jabba” >
Zainstaluj ręcznie ze strony pobierania OpenJDK:
Pobierz OpenJDK na Mac OSX ze strony http://jdk.java.net/ (na przykład Java 13 )
Zarchiwizuj tar OpenJDK i umieść wynikowy folder (tj.
jdk-13.jdk
) W swoim/Library/Java/JavaVirtualMachines/
folderze, ponieważ jest to standardowa i oczekiwana lokalizacja instalacji JDK. Możesz także zainstalować w dowolnym miejscu w rzeczywistości.Zainstaluj z Homebrew
Wersja Java dostępna w Homebrew Cask przed 3 października 2018 r. Była rzeczywiście Oracle JVM. Teraz jednak został zaktualizowany do OpenJDK. Zaktualizuj Homebrew, a zobaczysz ostatnią dostępną wersję do zainstalowania.
zainstaluj Homebrew, jeśli jeszcze tego nie zrobiłeś. Upewnij się, że jest zaktualizowany:
Dodaj beczki stuknij, jeśli jeszcze tego nie zrobiłeś (lub nie widzisz już starszych wersji Java z krokiem 3):
a dla wersji AdoptOpenJDK dodaj to dotknij:
Te beczki często zmieniają wersje Java i mogą istnieć inne krany z dodatkowymi wersjami Java.
Poszukaj wersji do zainstalowania:
lub dla wersji AdoptOpenJDK:
Sprawdź szczegóły dotyczące wersji, która zostanie zainstalowana:
lub dla wersji AdoptOpenJDK:
Zainstalować wersję konkretnego JDK, takich jak
java11
,adoptopenjdk8
lub po prostujava
alboadoptopenjdk
za prąd. Na przykład:Możesz również użyć w pełni kwalifikowanej ścieżki do starszych wersji:
Zostaną one zainstalowane w
/Library/Java/JavaVirtualMachines/
tradycyjnej lokalizacji oczekiwanej w systemie Mac OSX.Inne opcje instalacji:
Niektóre inne smaki openJDK to:
Certyfikowane przez Azul Systems Java wersje Zulu OpenJDK można zainstalować, postępując zgodnie z instrukcjami na ich stronie .
Kompilacje OpenJDK w Amazon Correto mają łatwy w użyciu pakiet instalacyjny dla wersji 8 lub 11 (nadchodzą inne wersje) i instaluje się w standardowym
/Library/Java/JavaVirtualMachines/
katalogu na Mac OSX.Gdzie jest mój JDK?!?!
Aby znaleźć lokalizacje wcześniej zainstalowanych JDK Java zainstalowanych w domyślnych lokalizacjach systemowych, użyj:
Możesz także zgłosić tylko lokalizację określonej wersji Java
-v
. Na przykład dla Java 13:Znajomość lokalizacji zainstalowanych JDK jest również przydatna podczas korzystania z narzędzi takich jak JEnv, dodawania lokalnej instalacji do SDKMAN lub łączenia systemowego JDK w Jabbie - i musisz wiedzieć, gdzie je znaleźć.
Jeśli chcesz znaleźć JDK zainstalowane przez inne narzędzia, sprawdź te lokalizacje:
~/.sdkman/candidates/java/
~/.jabba/jdk
Ręczne przełączanie wersji
Plik wykonywalny Java to opakowanie, które będzie wykorzystywać to, co JDK jest skonfigurowane
JAVA_HOME
, więc możesz to zmienić, aby zmienić także używany JDK.Na przykład, jeśli zainstalowałeś lub rozpakowałem JDK 13,
/Library/Java/JavaVirtualMachines/jdk-13.jdk
jeśli jest to najwyższy numer wersji, powinien już być domyślny, jeśli nie, możesz po prostu ustawić:A teraz cokolwiek plik wykonywalny Java jest na ścieżce, zobaczy to i użyje poprawnego JDK.
Korzystanie z
/usr/libexec/java_home
narzędzia, jak opisano wcześniej, pomaga tworzyć aliasy lub uruchamiać polecenia zmieniające wersje Java poprzez identyfikację lokalizacji różnych instalacji JDK. Na przykład, tworzenie aliasów powłoki w twoim.profile
lub w.bash_profile
celu zmianyJAVA_HOME
dla ciebie:Następnie, aby zmienić wersje, wystarczy użyć aliasu.
Oczywiście
JAVA_HOME
ręczne ustawienie również działa!Przełączanie wersji za pomocą JEnv
JEnv oczekuje, że Java JDK już istnieje na komputerze i może znajdować się w dowolnym miejscu. Zazwyczaj znajdziesz zainstalowane JDK Java w
/Library/Java/JavaVirtualMachines/
. JEnv pozwala ustawić globalną wersję Javy, jedną dla bieżącej powłoki oraz wersję lokalną dla katalogu, która jest przydatna, gdy niektóre projekty wymagają innych wersji niż inne.Zainstaluj JEnv, jeśli jeszcze tego nie zrobiłeś, instrukcje na stronie http://www.jenv.be/ dotyczące ręcznej instalacji lub korzystania z Homebrew.
Dodaj dowolną wersję Java do JEnv ( dostosuj katalog, jeśli umieściłeś go w innym miejscu ):
Ustaw swoją wersję globalną za pomocą tego polecenia:
Możesz także dodać inne istniejące wersje, używając
jenv add
w podobny sposób, i wymienić te, które są dostępne. Na przykład Java 8:Więcej informacji znajdziesz w dokumentacji JEnv . Możesz teraz przełączać się między dowolnymi wersjami Java (Oracle, OpenJDK, inne) w dowolnym momencie dla całego systemu, dla powłok lub dla katalogu lokalnego.
Aby pomóc zarządzać
JAVA_HOME
podczas korzystania z JEnv, możesz dodać wtyczkę eksportu, aby zrobić to za Ciebie.Wtyczka eksportu może się nie dostosowywać,
JAVA_HOME
jeśli jest już ustawiona, więc może być konieczne wyczyszczenie tej zmiennej w swoim profilu, aby mogła być zarządzana przez JEnv.Możesz także użyć
jenv exec <command> <parms...>
do uruchomienia pojedynczych poleceńJAVA_HOME
iPATH
ustawienia dla jednego polecenia, które mogą obejmować otwarcie innej powłoki.Instalowanie i przełączanie wersji za pomocą SDKMAN
SDKMAN jest nieco inny i obsługuje zarówno instalację, jak i przełączanie. SDKMAN umieszcza również zainstalowane JDK we własnym drzewie katalogów, co zwykle jest
~/.sdkman/candidates/java
. SDKMAN umożliwia ustawienie globalnej domyślnej wersji i wersji specyficznej dla bieżącej powłoki.Zainstaluj SDKMAN z https://sdkman.io/install
Wymień dostępne wersje Java, aby upewnić się, że znasz identyfikator wersji
Zainstaluj jedną z tych wersji, na przykład Java 13:
Ustaw 13 jako domyślną wersję:
Lub zmień sesję na 13:
Gdy wyświetlisz listę dostępnych wersji do instalacji za pomocą polecenia list, zobaczysz wiele różnych dystrybucji Java:
I zainstaluj dodatkowe wersje, takie jak JDK 8:
SDKMAN może współpracować z poprzednio zainstalowanymi istniejącymi wersjami. Po prostu wykonaj lokalną instalację, podając własną etykietę wersji i lokalizację JDK:
I używaj go swobodnie:
Więcej informacji jest dostępnych w Przewodniku użytkowania SDKMAN wraz z innymi zestawami SDK, które można zainstalować i zarządzać.
SDKMAN automatycznie zarządza twoimi
PATH
iJAVA_HOME
dla ciebie podczas zmiany wersji.Instalowanie i przełączanie wersji za pomocą Jabba
Jabba obsługuje także instalację i przełączanie. Jabba umieszcza również zainstalowane JDK we własnym drzewie katalogów, co zwykle jest
~/.jabba/jdk
.Zainstaluj Jabba, postępując zgodnie z instrukcjami na stronie głównej .
Lista dostępnych JDK
Zainstaluj Java JDK 12
Użyj tego:
Możesz także aliasować nazwy wersji, link do już zainstalowanych JDK i znaleźć mieszankę interesujących JDK, takich jak GraalVM, Adopt JDK, IBM JDK i inne. Kompletny przewodnik użytkowania jest również dostępny na stronie głównej.
Jabba automatycznie zarządza twoimi
PATH
iJAVA_HOME
dla ciebie podczas zmiany wersji.źródło
JAVA_HOME
, aby wybrać konkretną wersję, cośexport JAVA_HOME=$(/usr/libexec/java_home -v <version>)
w stylu.bash_profile
JAVA_HOME
ustawiać ręcznie i sami to zarządzają. JEnv na pewno nie dostosuje tego, jeśli zostało wcześniej ustawione, nie jestem pewien co do Jabba i SDKMAN, ale normalnie poradzą sobie z tym ustawieniem. Tylko instalacja ręczna bez przełączania wersji NIE powinna nigdy ustawiać tej wartości bezpośrednio.Tak to zrobiłem.
Krok 1: Zainstaluj Javę 11
Możesz pobrać Java 11 dmg dla komputerów Mac tutaj: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Krok 2: Po instalacji Java 11. Potwierdź instalację wszystkich wersji. Wpisz następujące polecenie w swoim terminalu.
Krok 3: Edytuj plik .bash_profile
Krok 4: Dodaj 11.0.1 jako domyślny. (Dodaj poniższy wiersz do pliku bash_profile).
aby przejść do dowolnej wersji
Teraz naciśnij CTRL + X, aby wyjść z basha. Naciśnij „Y”, aby zapisać zmiany.
Krok 5: Załaduj ponownie profil bash
Krok 6: Potwierdź bieżącą wersję Java
źródło
Ręczna zmiana domyślnej wersji systemu bez narzędzi innych firm:
Jak szczegółowo opisano w tej starszej odpowiedzi , na macOS
/usr/bin/java
jest narzędziem otoki, które będzie korzystało z wersji Java wskazanej przezJAVA_HOME
lub jeśli ta zmienna nie jest ustawiona, będzie szukała instalacji Java pod/Library/Java/JavaVirtualMachines/
i użyje tej z najwyższą wersją. Określa wersje, sprawdzającContents/Info.plist
pod każdym pakietem.Uzbrojony w tę wiedzę możesz:
Info.plist
w wersjach, których nie chcesz używać jako domyślnych (ten plik nie jest używany przez rzeczywiste środowisko wykonawcze Java).$JAVA_HOME
Właśnie sprawdziłem, że nadal jest to prawdą w przypadku OpenJDK i Mojave.
W zupełnie nowym systemie nie ma zainstalowanej wersji Java:
Anuluj to, pobierz OpenJDK 11 i 12ea na https://jdk.java.net ; zainstaluj OpenJDK11:
Systemowa Java ma teraz 11 lat:
Zainstaluj OpenJDK12 (obecnie dostęp wcześniej):
System Java ma teraz 12 lat:
Teraz „ukryjmy” OpenJDK 12 przed otoki systemu Java:
System java powrócił do wersji 11:
I nadal możesz używać wersji 12 punktualnie, ustawiając ręcznie
JAVA_HOME
:źródło
Jeśli masz wiele wersji zainstalowanych na swoim komputerze, dodaj następujące w profilu bash:
I dodaj następujące aliasy:
I może przejść do wymaganej wersji za pomocą aliasu:
W terminalu:
~ >> java7 export JAVA_HOME=$JAVA_7_HOME
źródło
Inną alternatywą jest użycie SDKMAN ! Zobacz https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/
Najpierw zainstaluj SDKMAN: https://sdkman.io/install, a następnie ...
sdk install java 8.0.181-oracle
sdk install java 11.0.0-open
Przełączyć:
sdk use java 8.0.181-oracle
sdk use java 11.0.0-open
Aby ustawić domyślne:
sdk default java 8.0.181-oracle
sdk default java 11.0.0-open
źródło
Z Homebrew i jenv:
Założenie: komputer Mac i już zainstalowałeś Homebrew.
Zainstaluj beczkę:
Aby zainstalować najnowszą wersję Java:
Aby zainstalować java 8:
Aby zainstalować java 9:
Jeśli chcesz zainstalować / zarządzać wieloma wersjami, możesz użyć „jenv”:
Zainstaluj i skonfiguruj jenv:
Dodaj zainstalowaną Javę do jenv:
Aby zobaczyć wszystkie zainstalowane Java:
Powyższe polecenie wyświetli listę zainstalowanych programów Java:
Skonfiguruj wersję Java, której chcesz użyć:
źródło
Error: caskroom/cask was moved. Tap homebrew/cask-cask instead
, a następniefatal: repository 'https://github.com/Homebrew/homebrew-cask-cask/' not found
IMHO, Nie ma potrzeby instalowania wszystkich dodatkowych aplikacji / pakietów.
Sprawdź dostępne wersje za pomocą polecenia:
Teraz, jeśli chcesz wybrać Azul JDK 8 z powyższej listy, a NIE Java SE 8 Oracle, uruchom następującą komendę:
Aby wybrać Oracle SE 8 Oracle, wywołaj polecenie:
Jak widać, podany numer wersji będzie unikalnym zestawem ciągów: 1.8.0_181 vs. 1.8.0_151
źródło
1.8.0_181-zulu-8.31.0.1
? czy jest to częściowe dopasowanie?JAVA_HOME
. Ręczne przełączanie za pomocą tych poleceń jest omówione w mojej innej odpowiedzi.