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 adoptopenjdk8
Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.
brew cask install caskroom/versions/adoptopenjdk8
Error: 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.265
jenv global openjdk64-1.8.0.272
jenv versions
で検索します。
javac -version
java -version
コマンドが動作していることを確認してください。
グローバルJavaバージョンを設定
MacにはJavaがプリインストールされています。 システムにインストールされたプログラミング言語バージョン(PythonとRubyにも適用されます)の使用を避けることは常に良いことです。 jenvは、システムJavaを使用しないようにすることが容易になります。グローバルJavaバージョンをJava8に設定します。jenv global openjdk64-1.8.0.265
/Users/powers/.jenv/version
cat /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.272
JAVA_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 mvn
mvn
コマンドがjenv shimによって適切にキャプチャされているこ which mvn
/Users/powers/.jenv/shims/mvn
のようなものを返す必要があります。プロジェクトを複製してテストスイートを実行することで、Mavenインストールが正常に動作していることを確認できます。 JavaSparkプロジェクトをgit clone [email protected]:MrPowers/JavaSpark.git
コマンドで複製します。p>
cd
mvn test
でテストスイートを実行します。使用されているMavenのバージョンを確認するには、mvn -v
と入力します。 私のマシンはJava8でMaven3.6.3を使用しています。また、deequレポを複製し、mvn test
がそのレポでも動作していることを確認することもできます。プロジェクトのローカルJavaバージョンの設定
jenv local openjdk64-11.0.9
コマンドを使用して、特定のプロジェクトがデフォルトでJava11を使用するよこれにより、ルートプロジェクトフォルダに.java-version
git 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などのプラグインを内蔵しています。 ワークフローに関連するプラグインを有効にしてください。
Leave a Reply