Articles

MungingData

jenv maakt het eenvoudig om meerdere versies van Java op een Mac-computer te draaien. Het maakt het ook gemakkelijk om naadloos te schakelen tussen Java-versies wanneer u van Project wisselt.

het draaien van meerdere Java versies is belangrijk voor Android en Apache Spark ontwikkelaars. Spark ontwikkelaars moeten Java gebruiken 8 voor Spark 2 projecten en Java 11 Voor Spark 3 projecten bijvoorbeeld.

deze blogpost laat u zien hoe u jenv op uw computer kunt instellen en hoe u de belangrijke commando ‘ s kunt gebruiken.

JenV setup

JenV installeren metbrew install jenv. Dit is een Homebrew Commando.

jenv gebruikt het shim-ontwerppatroon om commando ‘ s naar de juiste Java-versie te routeren. Voer deze commando ‘ s uit om uw PATH:

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

herstart uw Terminal, voer echo $PATH uit, en controleer of de uitvoer .jenv paden bevat die zijn toegevoegd aan de standaard PADMAPPEN. Hier is de uitvoer op mijn machine /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

install Java 8

Hier is het laatste commando om Java 8 te installeren: brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 gebruikt om te werken, maar geeft nu Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 ook gebruikt om te werken, maar geeft nu Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

zodra Java is gedownload, moeten we handmatig toevoegen voor JenV. Toon de Java virtuele machines met ls -1 /Library/Java/JavaVirtualMachines.

voeg Java 8 toe aan jenv met jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

Stel de Globale Java-versie op uw computer in met jenv global openjdk64-1.8.0.265. Het exacte commando op uw machine kan iets anders zijn, zoals jenv global openjdk64-1.8.0.272. Zoek de exacte naam van de versie met jenv versions.

Controleer of de opdrachten javac -version en java -version werken.

set global Java version

Macs worden geleverd met Java voorgeïnstalleerd. Het is altijd goed om te voorkomen dat het gebruik van het systeem geïnstalleerd programmeertaal versies (geldt ook voor Python en Ruby). jenv maakt het gemakkelijk om het gebruik van het systeem Java te vermijden.

Stel de Globale Java-versie in op Java 8 met jenv global openjdk64-1.8.0.265.

Dit commando schrijft de versie eenvoudig naar het /Users/powers/.jenv/version bestand. Typ cat /Users/powers/.jenv/version om te zien dat het slechts een bestand is met een enkele regel

openjdk64-1.8.0.272

alle Java-commando ‘ s zullen worden gerouteerd naar Java 8 nu de Globale versie is ingesteld. Dit zal ervoor zorgen dat we voorkomen dat het raken van het systeem Java-versie.

set JAVA_HOME

veel Java-bibliotheken zijn afhankelijk van het hebben van een JAVA_HOME omgevingsvariabele set. Stel de omgevingsvariabele in door deze commando ‘ s uit te voeren:

jenv enable-plugin exportexec $SHELL -l

voer echo $JAVA_HOME uit en controleer of het iets als /Users/powers/.jenv/versions/openjdk64-1.8.0.272retourneert. Nu zal elke bibliotheek die op zoek is naar de in te stellen JAVA_HOME omgeving geen fout maken.

voer jenv doctor uit om te bevestigen dat uw installatie goed is. U krijgt de volgende uitvoer:

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

install Java 11

Hier is het commando om Java 11 te installeren: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

onthoud dat Java-versies handmatig moeten worden toegevoegd aan jenv. Toon de Java virtuele machines met ls -1 /Library/Java/JavaVirtualMachines.

voeg Java 11 toe aan jenv met jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

het commando jenv versions moet nu het volgende uitvoeren:

 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

instellen Maven

which mvn geeft /usr/local/bin/mvn, de systeemversie van Maven. Net als bij Java, willen we nooit commando ‘ s uitvoeren met behulp van het systeem Maven. Laten we jenv gebruiken om een andere versie van Maven te krijgen.

Activeer de JenV Maven plugin met jenv enable-plugin maven en voer vervolgens which mvn uit om te controleren of de mvn commando ‘ s correct worden vastgelegd door een JenV shim. Het commando which mvn moet iets als /Users/powers/.jenv/shims/mvnteruggeven.

u kunt controleren of uw Maven installatie correct werkt door een project te klonen en de test suite uit te voeren. Cloon het JavaSpark project met het git clone [email protected]:MrPowers/JavaSpark.git Commando.

cd in de projectmap en voer de test suite uit met mvn test.

u kunt mvn -v typen om de Maven-versie te zien die wordt gebruikt. Mijn machine gebruikt Maven 3.6.3 met Java 8.

u kunt ook de Deeq repo klonen en verifiëren dat mvn test ook aan die repo werkt.

lokale Java-versie instellen voor projecten

gebruik de opdrachtjenv local openjdk64-11.0.9 om een bepaald project standaard Java 11 te laten gebruiken.

Dit zal een .java-version Bestand toevoegen in de root projectmap. Hier is een voorbeeld.

u kunt de delta-voorbeelden repo klonen met git clone [email protected]:MrPowers/delta-examples.git, cd in de map, en jenv versions uitvoeren om te controleren of het project automatisch Java 11 gebruikt.

Hier is de jenv versions uitvoer van de Delta-examples Project root directory:

 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)

jenv ‘ s mogelijkheid om automatisch van Java-versie te wisselen voor verschillende projecten is heel handig. U hoeft niet na te denken over het handmatig instellen van de Java-versie wanneer u van project verandert.

andere manieren om van Java-versie te wisselen

Het Adopenjdk-project biedt een leidraad voor het handmatig schakelen tussen Java-versies Als u jenv niet wilt gebruiken. Hier is de functie die ze bieden:

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

handmatig schakelen is mogelijk, maar wie wil er mentale energie verspillen aan het denken over Java-versies elke keer dat ze van project wisselen?

volgende stappen

jenv zal u helpen Java op uw Mac te beheren, zelfs als u slechts één versie nodig hebt.

Het beheren van verschillende Java versies op een bepaalde machine was een enorme pijn voordat jenv kwam. Nu hoeft u slechts een paar commando ‘ s uit te voeren en uw machine kan worden geconfigureerd om elke Java-versie uit te voeren. jenv maakt het gemakkelijk om per ongeluk het gebruik van het systeem geïnstalleerde Java pakketten te voorkomen.

jenv heeft ingebouwde plugins voor SBT, Scala, Groovy, en meer. Zorg ervoor dat u de plugins die relevant zijn voor uw workflows inschakelen.