Articles

MungingData

jenv gør det nemt at køre flere versioner af Java på en Mac-computer. Det gør det også nemt at problemfrit skifte mellem Java-versioner, når du skifter projekter.

at køre flere Java-versioner er vigtigt for Android-og Apache Spark-udviklere. Spark-udviklere skal bruge Java 8 til Spark 2-projekter og Java 11 til Spark 3-projekter for eksempel.

dette blogindlæg viser dig, hvordan du får jenv-opsætning på din computer, og hvordan du bruger de vigtige kommandoer.

jenv setup

Installer jenv med brew install jenv. Dette er en Hjemmebryggekommando.

jenv bruger shim-designmønsteret til at dirigere kommandoer til den relevante Java-version. Kør disse kommandoer for at opdatere din PATH:

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

genstart din Terminal, Kør echo $PATH, og bekræft, at output indeholder .jenv stier, der er forudindstillet til standardstimapperne. Her er output på min maskine /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

installer Java 8

Her er den seneste kommando til at installere Java 8:brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 bruges til at arbejde, men returnerer nu Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 bruges også til at arbejde, men returnerer nu Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

en gang Java er hentet, vi skal manuelt tilføje det til jenv. Liste Java virtuelle maskiner med ls -1 /Library/Java/JavaVirtualMachines.

Tilføj Java 8 til jenv med jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

Indstil den globale Java-version på din computer med jenv global openjdk64-1.8.0.265. Den nøjagtige kommando på din maskine kan være noget lidt anderledes som jenv global openjdk64-1.8.0.272. Find det nøjagtige navn på versionen med .

Kontroller, at kommandoernejavac -version ogjava -version fungerer.

Indstil global Java-version

Mac ‘ er leveres med Java forudinstalleret. Det er altid godt at undgå at bruge systeminstallerede programmeringssprogversioner (gælder også Python og Ruby). jenv gør det nemt at undgå at bruge systemet Java.

Indstil den globale Java-version til Java 8 med jenv global openjdk64-1.8.0.265.

denne kommando skriver simpelthen versionen til/Users/powers/.jenv/version filen. Skriv cat /Users/powers/.jenv/version for at se det er bare en fil med en enkelt linje

openjdk64-1.8.0.272

alle Java-kommandoer vil blive dirigeret til Java 8 Nu, hvor den globale version er indstillet. Dette sikrer, at vi undgår at ramme system Java-versionen.

sæt JAVA_HOME

masser af Java-biblioteker afhænger af at have etJAVA_HOME miljøvariabelsæt. Indstil miljøvariablen ved at køre disse kommandoer:

jenv enable-plugin exportexec $SHELL -l

Kør echo $JAVA_HOME og kontroller, at den returnerer noget som /Users/powers/.jenv/versions/openjdk64-1.8.0.272. Nu er ethvert bibliotek, der leder efter JAVA_HOME miljø, der skal indstilles, ikke fejl.

Kør jenv doctor for at bekræfte, at din opsætning er god. Du skal få output som denne:

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

installer Java 11

Her er kommandoen til at installere Java 11:brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

Husk, at Java-versioner skal tilføjes manuelt til jenv. Liste Java virtuelle maskiner med ls -1 /Library/Java/JavaVirtualMachines.

Tilføj Java 11 til jenv med jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

kommandoen skal nu udsende dette:

 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

opsætning af Maven

which mvn returns/usr/local/bin/mvn, som er systemversionen af maven. I lighed med Java vil vi aldrig køre kommandoer ved hjælp af systemet Maven. Lad os bruge jenv til at få en anden version af Maven.

aktiver jenv Maven plugin medjenv enable-plugin maven og kør derefterwhich mvn for at kontrollere, atmvn kommandoer bliver korrekt fanget af en jenv shim. Kommandoenwhich mvn skal returnere noget som/Users/powers/.jenv/shims/mvn.

Du kan kontrollere, at din Maven-installation fungerer korrekt ved at klone et projekt og køre testpakken. Klon JavaSpark-projektet med kommandoengit clone [email protected]:MrPowers/JavaSpark.git.

cd ind i projektmappen og kør testsuiten medmvn test.

Du kan skrivemvn -v for at se den Maven-version, der bruges. Min maskine bruger Maven 3.6.3 med Java 8.

Du kan også klone Deek repo og kontrollere, atmvn test arbejder også på den repo.

Indstilling af lokal Java-version til projekter

brug kommandoenjenv local openjdk64-11.0.9 til at indstille et givet projekt til at bruge Java 11 som standard.

dette tilføjer en.java-version fil i rodprojektmappen. Her er et eksempel.

Du kan klone delta-eksemplerne repo medgit clone [email protected]:MrPowers/delta-examples.git, cd i mappen og køre for at kontrollere, at projektet automatisk bruger Java 11.

Her er output fra delta-eksempler projekt rodmappe:

 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 evne til automatisk at skifte Java-versioner til forskellige projekter er ret praktisk. Du behøver ikke at tænke på manuelt at indstille Java-versionen, når du ændrer projekter.

andre måder at skifte Java-versioner

AdoptOpenJDK-projektet giver vejledning i, hvordan man manuelt skifter mellem Java-versioner, hvis du ikke vil bruge jenv. Her er den funktion, de leverer:

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

det er muligt at skifte manuelt, men hvem vil spilde mental energi på at tænke på Java-versioner, hver gang de skifter et projekt?

næste trin

jenv hjælper dig med at administrere Java på din Mac, Selvom du kun skal bruge en enkelt version.

håndtering af forskellige Java-versioner på en given maskine var en enorm smerte, før jenv kom sammen. Nu behøver du kun at køre et par kommandoer, og din maskine kan konfigureres til at køre enhver Java-version. jenv gør det nemt at undgå ved et uheld at bruge de systeminstallerede Java-pakker.

jenv har indbygget plugins til SBT, Scala, Groovy og meget mere. Sørg for at aktivere de plugins, der er relevante for dine arbejdsgange.