Articles

MungingData

jenvを使用してMacOS上で複数のバージョンのJavaを実行すると、Macコンピュータ上で複数のバージョンのJavaを簡単に実行できます。 また、プロジェクトを切り替えるときにJavaバージョンをシームレスに切り替えることも容易になります。

複数のJavaバージョンを実行することは、AndroidとApache Spark開発者にとって重要です。 Spark開発者は、たとえば、Spark2プロジェクトにはJava8を使用し、Spark3プロジェクトにはJava11を使用する必要があります。

このブログ記事では、コンピュータ上でjenvセットアップを取得する方法と重要なコマンドを使用する方法を示しています。

jenv setup

jenvをbrew install jenv これは自作コマンドです。

jenvはshimデザインパターンを使用して、コマンドを適切なJavaバージョンにルーティングします。 これらのコマンドを実行して更新しますPATH:

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

ターミナルを再起動し、echo $PATH.jenv/Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin。Java8をインストールするための最新のコマンドは次のとおりです。brew cask install adoptopenjdk/openjdk/adoptopenjdk8

brew cask install adoptopenjdk8Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

Javaがダウンロー手動でjenvに追加します。 ls -1 /Library/Java/JavaVirtualMachinesを持つJava仮想マシンを一覧表示します。jenvにJava8を追加します。jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/

コンピュータのグローバルJavaバージョンをjenv global openjdk64-1.8.0.265jenv global openjdk64-1.8.0.272jenv versionsで検索します。

javac -versionjava -versionコマンドが動作していることを確認してください。

グローバルJavaバージョンを設定

MacにはJavaがプリインストールされています。 システムにインストールされたプログラミング言語バージョン(PythonとRubyにも適用されます)の使用を避けることは常に良いことです。 jenvは、システムJavaを使用しないようにすることが容易になります。グローバルJavaバージョンをJava8に設定します。jenv global openjdk64-1.8.0.265/Users/powers/.jenv/versioncat /Users/powers/.jenv/versionそれは単一行のファイルだけであることを確認するには

openjdk64-1.8.0.272

グローバルバージョンが設定されたので、すべてのJavaコ これにより、システムJavaバージョンにヒットしないようにします。多くのJavaライブラリは、JAVA_HOME環境変数が設定されていることに依存しています。 次のコマンドを実行して環境変数を設定します。

jenv enable-plugin exportexec $SHELL -l

Runecho $JAVA_HOME/Users/powers/.jenv/versions/openjdk64-1.8.0.272JAVA_HOME環境を探しているライブラリはエラーになりません。

実行jenv doctor設定が正常であることを確認します。 次のような出力が得られるはずです。

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

Install Java11

Java11をインストールするコマンドは次のとおりです。brew cask install adoptopenjdk/openjdk/adoptopenjdk11。Javaバージョンは手動でjenvに追加する必要があることに注意してください。 ls -1 /Library/Java/JavaVirtualMachinesを持つJava仮想マシンを一覧表示します。JenvにJava11を追加します。jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/

jenv versionsコマンドはこれを出力する必要があります。

 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のセットアップ

which mvnは、Mavenのシステムバージョンである/usr/local/bin/mvnを返します。 Javaと同様に、システムMavenを使用してコマンドを実行することは決してありません。 Jenvを使用して別のバージョンのMavenを取得しましょう。p>

jenv enable-plugin mavenでjenv Mavenプラグインを有効にし、which mvnmvnコマンドがjenv shimによって適切にキャプチャされているこ which mvn/Users/powers/.jenv/shims/mvnのようなものを返す必要があります。プロジェクトを複製してテストスイートを実行することで、Mavenインストールが正常に動作していることを確認できます。 JavaSparkプロジェクトをgit clone [email protected]:MrPowers/JavaSpark.gitコマンドで複製します。p>

cdmvn testでテストスイートを実行します。使用されているMavenのバージョンを確認するには、mvn -vと入力します。 私のマシンはJava8でMaven3.6.3を使用しています。また、deequレポを複製し、mvn testがそのレポでも動作していることを確認することもできます。プロジェクトのローカルJavaバージョンの設定

jenv local openjdk64-11.0.9コマンドを使用して、特定のプロジェクトがデフォルトでJava11を使用するよこれにより、ルートプロジェクトフォルダに.java-versiongit clone [email protected]:MrPowers/delta-examples.gitでdelta-examplesリポジトリをクローンし、cdをディレクトリに移動し、jenv versionsを実行して、プロジェクトが自動的にJava11を使用していることを確認できます。

delta-examplesプロジェクトのルートディレクトリからのjenv versions出力は次のとおりです。

 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の異なるプロジェクトのJavaバージョンを自動的に切り替える機能は非常に便利です。 プロジェクトを変更するときにJavaバージョンを手動で設定することについて考える必要はありません。Jenvを使用したくない場合、AdoptOpenJDKプロジェクトでは、Javaバージョンを手動で切り替える方法についてのガイダンスを提供しています。 ここでは、彼らが提供する機能です:

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

手動で切り替えることは可能ですが、プロジェクトを切り替えるたびにJavaバージョンを考jenvは、単一のバージョンのみを使用する必要がある場合でも、Mac上でJavaを管理するのに役立ちます。

特定のマシン上で異なるJavaバージョンを管理することは、jenvが来る前は大きな苦痛でした。 これで、いくつかのコマンドを実行するだけで、任意のJavaバージョンを実行するようにマシンを構成できます。 jenvは、システムにインストールされたJavaパッケージを誤って使用しないようにすることが容易になります。jenvはSBT、Scala、Groovyなどのプラグインを内蔵しています。 ワークフローに関連するプラグインを有効にしてください。