Mac で jenv を用いて複数バージョンの Java を用いる方法

まず複数バージョンの Java をインストールする

複数バージョンの Java をインストールする方法はこちらに書かれているとおりです。

stackoverflow.com

以下、具体的な手順を書きます。

0. 前提

Homebrew はインストールされているものとします。

1. Java をインストールするために、リポジトリを追加する

まっさらな状態ですと Java のパッケージが brew で引っかからない(に等しい)ので、brew tap をしてリポジトリを追加します。

$ brew tap homebrew/cask-versions
$ brew tap adoptopenjdk/openjdk

2. インストール可能な Java (JDK) のバージョンを確認する

brew search コマンドを用いて、インストール可能な Java (JDK) のバージョンを確認します。パッケージ名が jdk なので、jdk という単語でサーチをかけないと引っかからないことに注意です*1

$ brew search jdk
==> Formulae
openjdk                               openjdk@11                             openjdk@12

==> Casks
adoptopenjdk                          adoptopenjdk12-openj9-jre             adoptopenjdk8-jre
adoptopenjdk10                        adoptopenjdk12-openj9-jre-large       adoptopenjdk8-openj9
adoptopenjdk11                        adoptopenjdk12-openj9-large           adoptopenjdk8-openj9-jre
adoptopenjdk11-jre                    adoptopenjdk13                        adoptopenjdk8-openj9-jre-large
adoptopenjdk11-openj9                 adoptopenjdk13-jre                    adoptopenjdk8-openj9-large
adoptopenjdk11-openj9-jre             adoptopenjdk13-openj9                 adoptopenjdk9
adoptopenjdk11-openj9-jre-large       adoptopenjdk13-openj9-jre             oracle-jdk
adoptopenjdk11-openj9-large           adoptopenjdk13-openj9-jre-large       oracle-jdk-javadoc
adoptopenjdk12                        adoptopenjdk13-openj9-large           sapmachine-jdk
adoptopenjdk12-jre                    adoptopenjdk8
adoptopenjdk12-openj9                 adoptopenjdk8

Casks は GUI のパッケージであることを指しますが、今回は GUI であることそのものはほとんど関係ないです。cask コマンドでないとインストールできない(単なる brew コマンドではインストールできない)ということが大切なことになります。

3. 複数バージョンの Java をどんどん入れていく

brew cask install コマンドを用いて複数のバージョンの Java をどんどんインストールしていきましょう。例えば以下のようにします。

$ brew cask install adoptopenjdk13
🍺  adoptopenjdk13 was successfully installed!
$ brew cask install adoptopenjdk12
🍺  adoptopenjdk12 was successfully installed!
$ brew cask install adoptopenjdk11
🍺  adoptopenjdk11 was successfully installed!
$ brew cask install adoptopenjdk10
🍺  adoptopenjdk10 was successfully installed!
$ brew cask install adoptopenjdk9
🍺  adoptopenjdk9 was successfully installed!

adoptopenjdk8 については2つのパッケージのうちのどちらかを明示的に選ぶ必要があるかもしれません。ここでは adoptopenjdk8 の方を入れます。

$ brew cask install adoptopenjdk8
Error: Cask adoptopenjdk8 exists in multiple taps:
  homebrew/cask-versions/adoptopenjdk8
  adoptopenjdk/openjdk/adoptopenjdk8
$ brew cask install homebrew/cask-versions/adoptopenjdk8  
🍺  adoptopenjdk8 was successfully installed!

4. 各バージョンの Java がインストールされているかどうかを確認する

上記のインストール方法によりインストールされた Java の各バージョンは、以下のディレクトリ配下にあります.

/Library/Java/JavaVirtualMachines

ここにたとえば adoptopenjdk-12.jdk などという名前で各バージョンごとにディレクトリが切られています。

javajavac といった実行ファイルは各バージョンのディレクトリをさらに掘った Contents/Home/bin にあります。java コマンドだったら例えば /Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/bin/java にあります。

それぞれのバージョンの java コマンドを $ ./java -version で実行し、それぞれのバージョンでインストールされているか確認するといいでしょう。

5. jenv に各バージョンの Java を追加する

ここでは jenv の説明は省略します。

jenv に各バージョンの Java を登録していくためには jenv add コマンドを用います。上記でインストールした前バージョンを一気に登録するとなると下記のようになるでしょう。

ここで、指定するディレクトリは、各バージョンのルートの場所である /Library/Java/JavaVirtualMachines/adoptopenjdk-XX.jdk/Contents/Home であることには注意です。

$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-12.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-10.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-9.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

なお、追加する途中で「開発元を検証できないため開けません」と出ることがあるかもしれませんが、その場合は こちらの記事 を参考にしてみて下さい。

6. jenv versions を実行して正しく追加されたことを確認する

各バージョンの Java が jenv に正しく追加されたかどうかを確認するため、jenv versions コマンドを実行しましょう。以下のように表示されれば OK です。

$ jenv versions
* system (set by /Users/FOOBAR/.jenv/version)
  1.8
  1.8.0.232
  10
  10.0
  10.0.2
  11
  11.0
  11.0.5
  12
  12.0
  12.0.2
  13
  13.0
  13.0.1
  9
  openjdk64-1.8.0.232
  openjdk64-10.0.2
  openjdk64-11.0.5
  openjdk64-12.0.2
  openjdk64-13.0.1
  openjdk64-9

7. jenv global/local コマンドを実行して使用する Java のバージョンを指定する

あとは他の Xenv コマンドと同様に、$ jenv global$ jenv local コマンドを実行して、使用する Java のバージョンを指定しましょう。コマンド実行後にシェルの再読み込みが必要になる場合があります。

注意点

  • 上記の内容はこの記事を書いた時点(2019/12/16 時点)での内容なので、変わる可能性があります
  • Ubuntu での場合は こちらの記事 を参考にしてみて下さい

*1:'java' では引っかからない

Powered by はてなブログ