Articles

mungingdata

jenv ułatwia uruchamianie wielu wersji Java na komputerze Mac. Ułatwia również płynne przełączanie się między wersjami oprogramowania Java podczas przełączania projektów.

uruchamianie wielu wersji Java jest ważne dla programistów Androida i Apache Spark. Programiści Spark powinni na przykład używać Java 8 dla projektów Spark 2 i Java 11 dla projektów Spark 3.

Ten post na blogu pokazuje, jak skonfigurować jenv na komputerze i jak używać ważnych poleceń.

jenv setup

zainstaluj jenv z brew install jenv. To dowództwo Homebrew.

jenv używa wzorca projektowego shim do kierowania poleceń do odpowiedniej wersji Java. Uruchom te polecenia, aby zaktualizować PATH:

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrcecho 'eval "$(jenv init -)"' >> ~/.zshrc

Uruchom ponownie Terminal, Uruchom echo $PATH I sprawdź, czy wyjście zawiera .jenv ścieżki, które są poprzedzone do standardowych katalogów ścieżek. Oto wyjście na moim komputerze /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

zainstaluj Javę 8

Oto najnowsze Polecenie do zainstalowania Javy 8:brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 kiedyś działało, ale teraz zwraca Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 również działało, ale teraz zwraca Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

Po pobraniu Javy musimy ręcznie dodać ją do jenv. Lista maszyn wirtualnych Java z ls -1 /Library/Java/JavaVirtualMachines.

Dodaj Javę 8 do jenv z jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

Ustaw globalną wersję Java na komputerze za pomocą jenv global openjdk64-1.8.0.265. Dokładne polecenie na twoim komputerze może być nieco inne, jak jenv global openjdk64-1.8.0.272. Znajdź dokładną nazwę wersji za pomocą jenv versions.

sprawdź, czy poleceniajavac -version Ijava -version działają.

Ustaw globalną wersję Java

komputery Mac są dostarczane z preinstalowanym oprogramowaniem Java. Zawsze dobrze jest unikać używania zainstalowanych systemowo wersji języka programowania (dotyczy to również Pythona i Ruby). jenv ułatwia unikanie używania Javy systemowej.

Ustaw globalną wersję Java Na Java 8 za pomocą jenv global openjdk64-1.8.0.265.

To polecenie po prostu zapisuje wersję do pliku/Users/powers/.jenv/version. Wpisz cat /Users/powers/.jenv/version, aby zobaczyć, że jest to tylko Plik z pojedynczą linią

openjdk64-1.8.0.272

wszystkie polecenia Java zostaną przekierowane do Java 8 Teraz, gdy jest ustawiona wersja globalna. Dzięki temu unikniemy uderzenia w systemową wersję Javy.

Ustaw JAVA_HOME

wiele bibliotek Java zależy od ustawienia zmiennej środowiskowejJAVA_HOME. Ustaw zmienną środowiskową, uruchamiając następujące polecenia:

jenv enable-plugin exportexec $SHELL -l

Uruchomecho $JAVA_HOMEI sprawdź, czy zwraca coś w stylu/Users/powers/.jenv/versions/openjdk64-1.8.0.272. Teraz każda biblioteka, która szuka środowiskaJAVA_HOME, które ma być ustawione, nie będzie wyświetlać błędu.

Uruchom jenv doctor, aby potwierdzić, że konfiguracja jest dobra. Należy uzyskać następujące dane wyjściowe:

 JAVA_HOME variable probably set by jenv PROMPT Java binaries in path are jenv shims Jenv is correctly loaded

zainstaluj Javę 11

oto polecenie zainstalowania Javy 11:brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

pamiętaj, że wersje Java muszą być ręcznie dodane do jenv. Lista maszyn wirtualnych Java z ls -1 /Library/Java/JavaVirtualMachines.

Dodaj Java 11 do jenv z jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

poleceniejenv versions powinno teraz wyświetlić następujące polecenie:

 system 1.8 1.8.0.272 11 11.0 11.0.9* openjdk64-1.8.0.272 (set by /Users/powers/.jenv/version) openjdk64-11.0.9

Konfiguracja Maven

which mvn zwraca/usr/local/bin/mvn, które jest systemowa wersja Mavena. Podobnie jak w Javie, nigdy nie chcemy uruchamiać poleceń za pomocą systemu Maven. Użyjmy jenv, aby uzyskać inną wersję Mavena.

Włącz wtyczkę jenv Maven za pomocą jenv enable-plugin maven, a następnie uruchom which mvn, aby sprawdzić, czy polecenia mvn są poprawnie przechwytywane przez podkładkę jenv. Poleceniewhich mvn powinno zwrócić coś w stylu/Users/powers/.jenv/shims/mvn.

Możesz sprawdzić, czy instalacja Mavena działa poprawnie, klonując projekt i uruchamiając pakiet testowy. Sklonuj projekt JavaSpark za pomocą poleceniagit clone [email protected]:MrPowers/JavaSpark.git.

cd do katalogu projektu i uruchom pakiet testowy zmvn test.

możesz wpisaćmvn -v, aby zobaczyć używaną wersję Mavena. Moja maszyna używa Maven 3.6.3 z Java 8.

Możesz również sklonować repozytorium deequ i sprawdzić, czymvn test również pracuje nad tym repozytorium.

ustawienie lokalnej wersji Java dla projektów

użyj poleceniajenv local openjdk64-11.0.9, aby ustawić dany projekt na Domyślnie używający Java 11.

spowoduje to dodanie pliku.java-version do folderu głównego projektu. Oto przykład.

możesz sklonować repo delta-examples za pomocągit clone [email protected]:MrPowers/delta-examples.git, CD do katalogu i uruchomićjenv versions, aby sprawdzić, czy projekt automatycznie korzysta z Java 11.

otojenv versions wyjście z katalogu głównego projektu delta-examples:

 system 1.8 1.8.0.272 11 11.0 11.0.9 openjdk64-1.8.0.272* openjdk64-11.0.9 (set by /Users/powers/Documents/code/my_apps/delta-examples/.java-version)

zdolność jenv do automatycznego przełączania wersji Java dla różnych projektów jest dość wygodna. Nie musisz myśleć o ręcznym ustawianiu wersji Java podczas zmiany projektów.

inne sposoby Przełączania wersji Java

projekt AdoptOpenJDK zawiera wskazówki dotyczące ręcznego przełączania między wersjami Java, jeśli nie chcesz używać jenv. Oto funkcja, którą zapewniają:

jdk() { version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version }

ręczne przełączanie jest możliwe, ale kto chce marnować energię psychiczną na myślenie o wersjach Javy za każdym razem, gdy przełączają projekt?

kolejne kroki

jenv pomoże Ci zarządzać Javą na komputerze Mac, nawet jeśli potrzebujesz tylko jednej wersji.

zarządzanie różnymi wersjami Javy na danej maszynie było ogromnym bólem zanim pojawił się jenv. Teraz wystarczy uruchomić tylko kilka poleceń, a komputer można skonfigurować do uruchamiania dowolnej wersji Java. jenv ułatwia uniknięcie przypadkowego użycia zainstalowanych przez system pakietów Java.

jenv ma wbudowane wtyczki dla SBT, Scala, Groovy i innych. Upewnij się, że włączyłeś wtyczki, które są odpowiednie dla Twoich przepływów pracy.