MungingData
jenv macht es einfach, mehrere Versionen von Java auf einem Mac-Computer auszuführen. Es macht es auch einfach, nahtlos zwischen Java-Versionen zu wechseln, wenn Sie Projekte wechseln.
Das Ausführen mehrerer Java-Versionen ist für Android- und Apache Spark-Entwickler wichtig. Spark-Entwickler sollten beispielsweise Java 8 für Spark 2-Projekte und Java 11 für Spark 3-Projekte verwenden.
Dieser Blogbeitrag zeigt Ihnen, wie Sie jenv auf Ihrem Computer einrichten und wie Sie die wichtigen Befehle verwenden.
jenv setup
Installieren Sie jenv mit brew install jenv
. Dies ist ein Homebrew-Befehl.
jenv verwendet das Shim-Entwurfsmuster, um Befehle an die entsprechende Java-Version weiterzuleiten. Führen Sie diese Befehle aus, um Ihre PATH
zu aktualisieren:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrcecho 'eval "$(jenv init -)"' >> ~/.zshrc
Starten Sie Ihr Terminal neu, führen Sie echo $PATH
aus und überprüfen Sie, ob die Ausgabe .jenv
Pfade enthält, die den Standardpfadverzeichnissen vorangestellt sind. Hier ist die Ausgabe auf meinem Computer /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
.
Java 8 installieren
Hier ist der neueste Befehl zum Installieren von Java 8: brew cask install adoptopenjdk/openjdk/adoptopenjdk8
.
brew cask install adoptopenjdk8
funktionierte früher, gibt aber jetzt zurück Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.
brew cask install caskroom/versions/adoptopenjdk8
funktionierte auch, gibt aber jetzt zurück Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.
Sobald Java heruntergeladen wurde, müssen wir Java fügen Sie es manuell zu jenv hinzu. Listen Sie die Java Virtual Machines mit ls -1 /Library/Java/JavaVirtualMachines
auf.
Fügen Sie Java 8 zu jenv mit jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/
hinzu.
Legen Sie die globale Java-Version auf Ihrem Computer mit jenv global openjdk64-1.8.0.265
fest. Der genaue Befehl auf Ihrem Computer könnte etwas anders sein als jenv global openjdk64-1.8.0.272
. Finden Sie den genauen Namen der Version mit jenv versions
.
Überprüfen Sie, ob die Befehle javac -version
und java -version
funktionieren.
Globale Java-Version festlegen
Auf Macs ist Java vorinstalliert. Es ist immer gut, die Verwendung von systeminstallierten Programmiersprachenversionen zu vermeiden (gilt auch für Python und Ruby). jenv macht es einfach, die Verwendung des Systems Java zu vermeiden.
Setzen Sie die globale Java-Version auf Java 8 mit jenv global openjdk64-1.8.0.265
.
Dieser Befehl schreibt die Version einfach in die /Users/powers/.jenv/version
Datei. Geben Sie cat /Users/powers/.jenv/version
ein, um zu sehen, dass es sich nur um eine Datei mit einer einzigen Zeile handelt
openjdk64-1.8.0.272
Alle Java-Befehle werden an Java 8 weitergeleitet, nachdem die globale Version festgelegt wurde. Dies wird sicherstellen, dass wir vermeiden, die System-Java-Version zu treffen.
Set JAVA_HOME
Viele Java-Bibliotheken hängen davon ab, dass eine JAVA_HOME
Umgebungsvariable gesetzt ist. Stellen Sie die Umgebungsvariable ein, indem Sie die folgenden Befehle ausführen:
jenv enable-plugin exportexec $SHELL -l
Führen Sie echo $JAVA_HOME
aus und stellen Sie sicher, dass sie etwas wie /Users/powers/.jenv/versions/openjdk64-1.8.0.272
zurückgibt. Jetzt wird jede Bibliothek, die nach der JAVA_HOME
Umgebung sucht, die festgelegt werden soll, keinen Fehler ausführen.
Führen Sie jenv doctor
aus, um zu bestätigen, dass Ihr Setup gut ist. Sie sollten die folgende Ausgabe erhalten:
JAVA_HOME variable probably set by jenv PROMPT Java binaries in path are jenv shims Jenv is correctly loaded
Java 11 installieren
Hier ist der Befehl zum Installieren von Java 11: brew cask install adoptopenjdk/openjdk/adoptopenjdk11
.
Denken Sie daran, dass Java-Versionen manuell zu jenv hinzugefügt werden müssen. Listen Sie die Java Virtual Machines mit ls -1 /Library/Java/JavaVirtualMachines
auf.
Fügen Sie Java 11 zu jenv mit jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/
hinzu.
Der Befehl jenv versions
sollte nun Folgendes ausgeben:
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
Maven einrichten
which mvn
gibt /usr/local/bin/mvn
zurück, die Systemversion von Maven. Ähnlich wie bei Java möchten wir niemals Befehle mit dem System Maven ausführen. Verwenden wir jenv, um eine andere Version von Maven zu erhalten.
Aktivieren Sie das jenv Maven Plugin mit jenv enable-plugin maven
und führen Sie dann which mvn
aus, um zu überprüfen, ob die mvn
Befehle werden ordnungsgemäß von einem jenv Shim erfasst. Der Befehl which mvn
sollte so etwas wie /Users/powers/.jenv/shims/mvn
.
Sie können überprüfen, ob Ihre Maven-Installation ordnungsgemäß funktioniert, indem Sie ein Projekt klonen und die Testsuite ausführen. Klonen Sie das JavaSpark-Projekt mit dem Befehl git clone [email protected]:MrPowers/JavaSpark.git
.
cd
in das Projektverzeichnis und führen Sie die Testsuite mit mvn test
.
Sie können mvn -v
eingeben, um die verwendete Maven-Version anzuzeigen. Mein Computer verwendet Maven 3.6.3 mit Java 8.
Sie können auch das deequ-Repo klonen und überprüfen, ob mvn test
auch an diesem Repo arbeitet.
Lokale Java-Version für Projekte festlegen
Verwenden Sie den Befehl jenv local openjdk64-11.0.9
, um ein bestimmtes Projekt standardmäßig auf Java 11 einzustellen.
Dadurch wird eine .java-version
-Datei im Stammprojektordner hinzugefügt. Hier ein Beispiel.
Sie können das delta-examples-Repo mit git clone [email protected]:MrPowers/delta-examples.git
klonen, cd in das Verzeichnis kopieren und jenv versions
ausführen, um zu überprüfen, ob das Projekt automatisch Java 11 verwendet.
Hier ist die jenv versions
Ausgabe aus dem delta-examples-Projektstammverzeichnis:
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ähigkeit, Java-Versionen für verschiedene Projekte automatisch zu wechseln, ist sehr praktisch. Sie müssen nicht daran denken, die Java-Version manuell festzulegen, wenn Sie Projekte ändern.
Andere Möglichkeiten, Java-Versionen zu wechseln
Das AdoptOpenJDK-Projekt bietet Anleitungen, wie Sie manuell zwischen Java-Versionen wechseln können, wenn Sie jenv nicht verwenden möchten. Hier ist die Funktion, die sie bieten:
jdk() { version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version }
Manuelles Umschalten ist möglich, aber wer möchte bei jedem Projektwechsel mentale Energie damit verschwenden, über Java-Versionen nachzudenken?
Nächste Schritte
jenv hilft Ihnen, Java auf Ihrem Mac zu verwalten, auch wenn Sie nur eine einzige Version verwenden müssen.
Die Verwaltung verschiedener Java-Versionen auf einem bestimmten Computer war ein großer Schmerz, bevor jenv kam. Jetzt müssen Sie nur noch ein paar Befehle ausführen und Ihr Computer kann so konfiguriert werden, dass er jede Java-Version ausführt. jenv macht es einfach, versehentlich mit dem System installierten Java-Pakete zu vermeiden.
jenv hat Plugins für SBT, Scala, Groovy und mehr eingebaut. Stellen Sie sicher, dass Sie die Plugins aktivieren, die für Ihre Workflows relevant sind.
Leave a Reply