Articles

MungingData

jenv usnadňuje spuštění více verzí Javy na počítači Mac. To také usnadňuje bezproblémové přepínání mezi verzemi Java při přepínání projektů.

spuštění více verzí Java je důležité pro vývojáře Android a Apache Spark. Vývojáři Spark by měli používat Java 8 Pro Spark 2 projekty a Java 11 pro Spark 3 projekty například.

tento blogový příspěvek vám ukáže, jak získat nastavení jenv v počítači a jak používat důležité příkazy.

jenv setup

nainstalujte jenv pomocí brew install jenv. Toto je příkaz Homebrew.

jenv používá vzor návrhu shim pro směrování příkazů do příslušné verze Java. Spustit tyto příkazy aktualizovat PATH:

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

Restartujte Terminál, spustit echo $PATH, a zkontrolujte, zda výstup obsahuje .jenv cesty, které jsou před standardní adresáře. Zde je výstup na mém počítači /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

Install Java 8

zde je nejnovější příkaz k instalaci Java 8: brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 pracoval, ale nyní se vrací Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 použita také do práce, ale teď se vrací Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

Jakmile je Java stáhnout, musíme ručně přidat do jenv. Seznam virtuálních strojů Java s ls -1 /Library/Java/JavaVirtualMachines.

přidejte Javu 8 do jenv pomocí jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

nastavte globální verzi Java v počítači pomocí jenv global openjdk64-1.8.0.265. Přesný příkaz na vašem počítači může být něco trochu jiného, jako jenv global openjdk64-1.8.0.272. Najděte přesný název verze pomocí jenv versions.

zkontrolujte, zda příkazy javac -version a java -version fungují.

nastavte globální verzi Java

Macy jsou dodávány s předinstalovanou Javou. Vždy je dobré se vyvarovat používání systémových verzí programovacího jazyka (platí i pro Python a Ruby). jenv usnadňuje vyhnout se používání systému Java.

nastavte globální verzi Java na Java 8 pomocí jenv global openjdk64-1.8.0.265.

Tento příkaz jednoduše zapíše verzi do souboru /Users/powers/.jenv/version. Typ cat /Users/powers/.jenv/version je vidět, že je to jen soubor s jediný řádek,

openjdk64-1.8.0.272

Všechny Java příkazy budou směrovány k Java 8 nyní, že globální verze je nastavit. Tím se zajistíme, že se vyhneme zásahu do systémové verze Java.

nastavit JAVA_HOME

spousta Java knihoven závisí na tom, že má JAVA_HOME nastavení proměnné prostředí. Nastavit proměnnou prostředí spuštěním těchto příkazů:

jenv enable-plugin exportexec $SHELL -l

Spustit echo $JAVA_HOME a ověřte, že vrací něco jako /Users/powers/.jenv/versions/openjdk64-1.8.0.272. Nyní každá knihovna, která hledá JAVA_HOME prostředí nastavit nebude chyba.

spusťte jenv doctor a potvrďte, že vaše nastavení je dobré. Měli byste získat výstup takto:

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

nainstalujte Java 11

zde je příkaz k instalaci Java 11: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

nezapomeňte, že Java verze musí být ručně přidány do jenv. Seznam virtuálních strojů Java s ls -1 /Library/Java/JavaVirtualMachines.

přidejte Javu 11 do jenv pomocí jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

jenv versions příkaz by měl nyní výstupu tohoto:

 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

Nastavení Maven

which mvn výnosy /usr/local/bin/mvn, což je verze systému Maven. Podobně jako Java, nikdy nechceme spouštět příkazy pomocí systému Maven. Použijme jenv k získání jiné verze Maven.

Povolit jenv Maven plugin s jenv enable-plugin maven a pak spustit which mvn ověřte, zda mvn příkazy jsou správně zachyceny jenv shim. Příkaz which mvn by měl vrátit něco jako /Users/powers/.jenv/shims/mvn.

klonováním projektu a spuštěním testovací sady můžete ověřit, že vaše instalace Maven funguje správně. Klonujte Projekt JavaSpark pomocí příkazu git clone [email protected]:MrPowers/JavaSpark.git.

cd do adresáře projektu a spusťte testovací sadu s mvn test.

můžete zadat mvn -v pro zobrazení použité verze Maven. Můj stroj používá Maven 3.6.3 s Java 8.

můžete také klonovat deequ repo a ověřit, že mvn test pracuje také na tomto repo.

Nastavení místní verze Java pro projekty

použijte příkaz jenv local openjdk64-11.0.9 pro nastavení daného projektu pro použití Java 11 ve výchozím nastavení.

tím se přidá soubor .java-version do kořenové složky projektu. Zde je příklad.

můžete naklonovat delta-příklady repo s git clone [email protected]:MrPowers/delta-examples.git, cd do adresáře a spustit jenv versions ověřit, že projekt je automaticky pomocí Java 11.

Zde je jenv versions výstup z delta-příklady kořenovém adresáři projektu:

 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 je schopnost automaticky přepínat Java verze pro různé projekty, je docela pohodlné. Při změně projektů nemusíte přemýšlet o ručním nastavení verze Java.

další způsoby přepínání verzí Java

Projekt AdoptOpenJDK poskytuje návod, jak ručně přepínat mezi verzemi Java, pokud nechcete používat jenv. Zde je funkce, kterou poskytují:

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

ruční přepínání je možné, ale kdo chce plýtvat duševní energií přemýšlením o verzích Java pokaždé, když přepnou projekt?

další kroky

jenv vám pomůže spravovat Javu Na Vašem počítači Mac, i když potřebujete použít pouze jednu verzi.

Správa různých verzí Java na daném počítači byla obrovská bolest, než přišla jenv. Nyní stačí spustit několik příkazů a počítač lze nakonfigurovat tak, aby spouštěl libovolnou verzi Java. jenv usnadňuje vyhnout se náhodnému použití systému nainstalovaných balíčků Java.

jenv má vestavěné pluginy pro SBT, Scala, Groovy a další. Nezapomeňte povolit pluginy, které jsou relevantní pro vaše pracovní postupy.