Articles

MungingData

jenv gör det enkelt att köra flera versioner av Java på en Mac-dator. Det gör det också enkelt att sömlöst växla mellan Java-versioner när du byter projekt.

att köra flera Java-versioner är viktigt för Android-och Apache Spark-Utvecklare. Spark-utvecklare bör använda Java 8 för Spark 2-projekt och Java 11 för Spark 3-projekt till exempel.

det här blogginlägget visar hur du får jenv-inställning på din dator och hur du använder de viktiga kommandona.

jenv setup

Installera jenv medbrew install jenv. Detta är ett Homebrew-kommando.

jenv använder Shim-designmönstret för att dirigera kommandon till lämplig Java-version. Kör dessa kommandon för att uppdatera din PATH:

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

Starta om din Terminal, kör echo $PATH och kontrollera att utmatningen innehåller .jenv sökvägar som är prepended till standardsökkatalogerna. Här är utmatningen på min maskin /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

installera Java 8

Här är det senaste kommandot för att installera Java 8: brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 används för att arbeta, men returnerar nu Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 används också för att arbeta, men returnerar nu Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

en gång Java laddas ner, vi måste manuellt lägga till det i jenv. Lista Java virtuella maskiner med ls -1 /Library/Java/JavaVirtualMachines.

Lägg till Java 8 till jenv med jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

Ställ in den globala Java-versionen på din dator med jenv global openjdk64-1.8.0.265. Det exakta kommandot på din maskin kan vara något lite annorlunda som jenv global openjdk64-1.8.0.272. Hitta det exakta namnet på versionen med jenv versions.

kontrollera att kommandonajavac -version ochjava -version fungerar.

ange Global Java-version

Mac-datorer levereras med Java förinstallerat. Det är alltid bra att undvika att använda systeminstallerade programmeringsspråkversioner (gäller även Python och Ruby). jenv gör det enkelt att undvika att använda systemet Java.

Ställ in den globala Java-versionen till Java 8 med jenv global openjdk64-1.8.0.265.

detta kommando skriver helt enkelt versionen till /Users/powers/.jenv/version – filen. Skriv cat /Users/powers/.jenv/version för att se det är bara en fil med en enda rad

openjdk64-1.8.0.272

alla Java-kommandon kommer att dirigeras till Java 8 Nu när den globala versionen är inställd. Detta kommer att se till att vi undviker att slå Systemet Java-versionen.

Set JAVA_HOME

många Java-bibliotek beror på att ha enJAVA_HOME miljövariabel uppsättning. Ställ in miljövariabeln genom att köra dessa kommandon:

jenv enable-plugin exportexec $SHELL -l

kör echo $JAVA_HOME och verifiera att den returnerar något som /Users/powers/.jenv/versions/openjdk64-1.8.0.272. Nu kommer alla bibliotek som letar efterJAVA_HOME miljö som ska ställas in inte att misslyckas.

kör jenv doctor för att bekräfta att installationen är bra. Du bör få utdata så här:

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

installera Java 11

här är kommandot för att installera Java 11: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

Kom ihåg att Java-versioner måste läggas manuellt till jenv. Lista Java virtuella maskiner med ls -1 /Library/Java/JavaVirtualMachines.

Lägg till Java 11 till jenv med jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

kommandotjenv versions ska nu mata ut detta:

 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

ställa in Maven

which mvn returnerar/usr/local/bin/mvn, vilket är systemversionen av Maven. I likhet med Java vill vi aldrig köra kommandon med systemet Maven. Låt oss använda jenv för att få en annan version av Maven.

Aktivera jenv Maven-plugin medjenv enable-plugin maven och kör sedanwhich mvn för att verifiera att kommandonamvn fångas korrekt av en jenv-shim. Kommandotwhich mvn ska returnera något som/Users/powers/.jenv/shims/mvn.

Du kan verifiera att din Maven-installation fungerar korrekt genom att klona ett projekt och köra testpaketet. Klona JavaSpark-projektet med kommandot git clone [email protected]:MrPowers/JavaSpark.git.

cd in i projektkatalogen och kör testpaketet med mvn test.

Du kan skriva mvn -v för att se Maven-versionen som används. Min maskin använder Maven 3.6.3 med Java 8.

Du kan också klona deequ repo och verifiera att mvn test arbetar också med den repo.

ställa in Lokal Java-version för projekt

använd kommandotjenv local openjdk64-11.0.9 för att ställa in ett givet projekt för att använda Java 11 som standard.

detta lägger till en.java-version – fil i rotprojektmappen. Här är ett exempel.

Du kan klona delta-examples repo med git clone [email protected]:MrPowers/delta-examples.git, cd i katalogen och köra jenv versions för att verifiera att projektet automatiskt använder Java 11.

här ärjenv versions utgång från delta-examples project rotkatalog:

 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)

jenvs förmåga att automatiskt byta Java-versioner för olika projekt är ganska bekvämt. Du behöver inte tänka på att manuellt ställa in Java-versionen när du ändrar projekt.

andra sätt att byta Java-versioner

AdoptOpenJDK-projektet ger vägledning om hur du manuellt växlar mellan Java-versioner om du inte vill använda jenv. Här är funktionen de tillhandahåller:

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

att byta manuellt är möjligt, men vem vill slösa mental energi på att tänka på Java-versioner varje gång de byter ett projekt?

nästa steg

jenv hjälper dig att hantera Java på din Mac, även om du bara behöver använda en enda version.

att hantera olika Java-versioner på en viss maskin var en enorm smärta innan jenv kom med. Nu behöver du bara köra några kommandon och din maskin kan konfigureras för att köra någon Java-version. jenv gör det enkelt att undvika att oavsiktligt använda systemet installerade Java-paket.

jenv har byggt in plugins för SBT, Scala, Groovy och mer. Se till att aktivera plugins som är relevanta för dina arbetsflöden.