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.272
retourneert. 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/mvn
teruggeven.
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.
Leave a Reply