Articles

MungingData

jenv segítségével megkönnyíti a Java több verziójának futtatását Mac számítógépen. Azt is megkönnyíti, hogy zökkenőmentesen válthat a Java verziók, ha váltani projektek.

Több Java verzió futtatása fontos az Android és az Apache Spark fejlesztők számára. A Spark fejlesztőinek Java 8-at kell használniuk a Spark 2 projektekhez, a Java 11-et pedig például a Spark 3 projektekhez.

Ez a blogbejegyzés megmutatja, hogyan szerezheti be a jenv beállítást a számítógépén, valamint hogyan használhatja a fontos parancsokat.

jenv setup

Install jenv with brew install jenv. Ez egy Homebrew parancs.

a jenv a shim tervezési mintát használja a parancsok átirányításához a megfelelő Java verzióhoz. Futtassa ezeket a parancsokat a PATH:

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

indítsa újra a terminált, futtassa a echo $PATH parancsot, és ellenőrizze, hogy a kimenet tartalmaz-e .jenv elérési útvonalakat, amelyek a standard PATH könyvtárakhoz vannak előkészítve. Itt van a kimenet a gépemen /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

telepítse a Java 8

itt van a legújabb parancs a Java 8 telepítéséhez: brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 használt dolgozni, de most visszatér Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 szintén használt dolgozni, de most visszatér

egyszer a Java letölthető, manuálisan kell hozzáadnunk a jenv-hez. Sorolja fel a Java virtuális gépek ls -1 /Library/Java/JavaVirtualMachines.

Add Java 8 jenv jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

állítsa be a globális Java verziót a számítógépen jenv global openjdk64-1.8.0.265. A pontos parancs a gépen lehet valami kicsit más, mint a jenv global openjdk64-1.8.0.272. Keresse meg a verzió pontos nevét a jenv versionssegítségével.

ellenőrizze, hogy ajavac -version ésjava -version parancsok működnek-e.

Set global Java version

Mac jön Java előre telepített. Mindig jó elkerülni a rendszer által telepített programozási nyelvi verziók használatát (a Python-ra és a Ruby-ra is vonatkozik). a jenv megkönnyíti a Java rendszer használatának elkerülését.

állítsa a globális Java verziót Java 8-ra a jenv global openjdk64-1.8.0.265segítségével.

Ez a parancs egyszerűen írja a verziót a /Users/powers/.jenv/version fájlba. Írja be a cat /Users/powers/.jenv/version hogy ez csak egy fájl egyetlen sorral

openjdk64-1.8.0.272

az összes Java parancs Java 8-ra kerül, most, hogy a globális verzió be van állítva. Ezzel elkerülhetjük a rendszer Java verziójának ütközését.

Set JAVA_HOME

sok Java könyvtár függ, hogy aJAVA_HOME környezeti változó készlet. Állítsa be a környezeti változót a következő parancsok futtatásával:

jenv enable-plugin exportexec $SHELL -l

Run echo $JAVA_HOME és ellenőrizze, hogy visszaad-e valamit, mint például a /Users/powers/.jenv/versions/openjdk64-1.8.0.272. Most minden olyan könyvtár, amely aJAVA_HOME környezetet keresi, nem fog hibázni.

Run jenv doctor a beállítás megerősítéséhez jó. Ilyen kimenetet kell kapnia:

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

telepítse a Java 11

parancsot a Java 11 telepítésére: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

ne feledje, hogy a Java verziókat manuálisan kell hozzáadni a jenv-hez. Sorolja fel a Java virtuális gépek ls -1 /Library/Java/JavaVirtualMachines.

Add Java 11 a jenv jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

a jenv versions parancsnak most ezt kell kiadnia:

 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 beállítása

which mvn/usr/local/bin/mvn, ami a rendszer változata Maven. A Java-hoz hasonlóan soha nem akarunk parancsokat futtatni a Maven rendszerrel. Használjuk a jenv-t, hogy megkapjuk a Maven másik verzióját.

engedélyezze a jenv Maven plugint jenv enable-plugin maven majd futtassa a which mvn parancsot annak ellenőrzésére, hogy a mvn parancsokat egy jenv shim megfelelően rögzíti. Awhich mvn parancsnak vissza kell adnia valami hasonlót:/Users/powers/.jenv/shims/mvn.

egy projekt klónozásával és a tesztcsomag futtatásával ellenőrizheti, hogy a Maven telepítése megfelelően működik-e. Klón a JavaSpark projekt a git clone [email protected]:MrPowers/JavaSpark.git parancs.

cd a projekt könyvtárba, majd futtassa a tesztcsomagot mvn test.

beírhatja amvn -v parancsot a használt Maven verzió megtekintéséhez. Saját gép használ Maven 3.6.3 Java 8.

klónozhatja a deequ repo-t is, és ellenőrizheti, hogy amvn test ezen a repo-n is dolgozik-e.

helyi Java verzió beállítása projektekhez

használja ajenv local openjdk64-11.0.9 parancsot egy adott projekt beállításához a Java 11 alapértelmezett használatához.

ez hozzáad egy .java-version fájlt a gyökérprojekt mappába. Íme egy példa.

a delta-examples repo-t agit clone [email protected]:MrPowers/delta-examples.git, a CD-t a könyvtárba klónozhatja, ajenv versions futtatásával ellenőrizheti, hogy a projekt automatikusan Java 11-et használ-e.

itt van ajenv versions kimenet a delta-példák projekt gyökérkönyvtárából:

 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 azon képessége, hogy a Java verziókat különböző projektekhez automatikusan átkapcsolja, nagyon kényelmes. A projektek módosításakor nem kell gondolnia a Java verzió manuális beállítására.

A Java verziók

váltásának egyéb módjai az AdoptOpenJDK projekt útmutatást nyújt a Java verziók közötti kézi váltáshoz, ha nem akarja használni a jenv-t. Itt van az általuk biztosított funkció:

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

kézi váltás lehetséges,de ki akarja pazarolni a mentális energiát a Java verziókra gondolva minden alkalommal, amikor egy projektet váltanak?

következő lépések

a jenv segít a Java kezelésében a Mac számítógépen, még akkor is, ha csak egyetlen verziót kell használnia.

kezelése különböző Java verziók egy adott gépen volt egy hatalmas fájdalom, mielőtt jenv jött. Most már csak néhány parancsot kell futtatnia, a gép pedig bármilyen Java verzió futtatására konfigurálható. a jenv megkönnyíti a rendszer által telepített Java csomagok véletlen használatának elkerülését.

a jenv beépülő modulokat épített az SBT, a Scala, A Groovy stb. Győződjön meg róla, hogy engedélyezi a munkafolyamatok szempontjából releváns bővítményeket.