未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

Macで複数のJDKを管理する

Javaのプログラムを作ったり動かしたりする時に必要なJDKですが、複数のバージョンを切り替えながら確認する必要が出てきたので、インストールの方法から切替方法までまとめておきます。

使用するJDKのバージョン8、11、15です。


インストール

まずは複数のJDKのバージョンを管理するため、Homebrewをインストールします。

※Homebrewは「パッケージ管理システム」と呼ばれ、パッケージをインストールしたりアンインストールしたり出来るシステムです。


とりあえずHomebrewがインストールされているかどうかを確認します。

$ brew -v
Homebrew 2.7.3-27-g99a7e21
Homebrew/homebrew-core (git revision f2db09; last commit 2021-01-13)

これでバージョンが表示されればインストールされています。

もしバージョンが表示されなかった場合は、公式サイトにインストールするコマンドが記載されていますので、コピーしてターミナルに貼り付けて実行すればインストールできます。


Homebrewがインストールされていたら、念のため下記コマンドでアップデートしておきましょう。

$ brew update


次に、複数バージョンを管理してくれる機能として、homebrew-cask-versions をインストールします。

$ brew tap homebrew/cask-versions
==> Tapping homebrew/cask-versions
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-versions'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 231335 (delta 15), reused 5 (delta 4), pack-reused 231303
Receiving objects: 100% (231335/231335), 59.46 MiB | 2.00 MiB/s, done.
Resolving deltas: 100% (159296/159296), done.
Tapped 176 casks (222 files, 65.9MB).

※最新のコマンドを確認するには公式サイトを確認してください。


次にJavaの15をインストールします。

このブログを書いた2021/01/13時点の最新版はJava15なのでバージョンを指定せずにインストールすると、Java15がインストールされます。

$ brew cask install java
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 5 formulae.

==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Enumerating objects: 65, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 543672 (delta 40), reused 45 (delta 24), pack-reused 543607
Receiving objects: 100% (543672/543672), 239.24 MiB | 2.41 MiB/s, done.
Resolving deltas: 100% (383723/383723), done.
Tapped 3790 casks (3,911 files, 256.7MB).
Error: Calling brew cask install is disabled! Use brew install [--cask] instead.

と思ったらエラー発生。


brew cask installの呼び出しは無効」って言われちゃいました。「brew install [--cask] 」を使用してくれって言われているので、改めてインストール。

$ brew install java
==> Downloading https://homebrew.bintray.com/bottles/openjdk-15.0.1.big_sur.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/6f31366f86a5eacf66673fca9ad647b98b207820f8cfea49a22af596395d3dba?response-content
######################################################################## 100.0%
==> Pouring openjdk-15.0.1.big_sur.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /usr/local,
because it shadows the macOS `java` wrapper.

If you need to have openjdk first in your PATH run:
  echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk you may need to set:
  export CPPFLAGS="-I/usr/local/opt/openjdk/include"

==> Summary
🍺  /usr/local/Cellar/openjdk/15.0.1: 614 files, 324.9MB

無事にインストール完了。


引き続きJavaの11をインストール。

$ brew install java11
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 1 formula.

==> Downloading https://homebrew.bintray.com/bottles/openjdk%4011-11.0.9.big_sur.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/610ed0bd964812cdce0f6e1a4b8c06fd867861c72be7ebff9f674362ba48b7b9?response-content
######################################################################## 100.0%
==> Pouring openjdk@11-11.0.9.big_sur.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

openjdk@11 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have openjdk@11 first in your PATH run:
  echo 'export PATH="/usr/local/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk@11 you may need to set:
  export CPPFLAGS="-I/usr/local/opt/openjdk@11/include"

==> Summary
🍺  /usr/local/Cellar/openjdk@11/11.0.9: 653 files, 297.2MB

これもインストール完了。


今度はJavaの8をインストール。

$ brew install java8
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
Error: No available formula or cask with the name "java8".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching taps on GitHub...
Error: No formulae found in taps.


またエラー、、、、、、。

ライセンスの関係でエラーになるようですね。


代替として用意されている「adoptopenjdk8」をインストールします。

$ brew install homebrew/cask-versions/adoptopenjdk8
Updating Homebrew...
==> Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u275-b01/OpenJDK8U-jdk_x64_mac_hotspot_8u275b01.pkg
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/140418865/7eda4600-2436-11eb-9a85-5d9a1dfe36f5?X-Amz-Al
######################################################################## 100.0%
==> Installing Cask adoptopenjdk8
==> Running installer for adoptopenjdk8; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
installer: Package name is AdoptOpenJDK
installer: Installing at base path /
installer: The install was successful.
🍺  adoptopenjdk8 was successfully installed!

これもインストール完了しました。


インストール済みのバージョンを確認する。

下記コマンドで確認します。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    1.8.0_275 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

:

:


1.8 しか表示されません、、、、、、。


色々調べましたが、15も11もインストールはされているっぽい。

ここの原因は不明。(分かる方がいたら教えてください。)


とりあえずJDKの切替

./zshrc に下記を追加しました。

 # JDK15
 #export PATH="/usr/local/opt/openjdk/bin:$PATH"
 # JDK11
 #export PATH="/usr/local/opt/openjdk@11/bin:$PATH"
 # JDK8
 export PATH="/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin:$PATH"

とりあえず各バージョン毎の設定を記述しました。(上記は8を設定しているので、15と11はコメントアウト


バージョンを確認してみます。

$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)

とりあえず8になりました。(15も11もバージョン表示されました)



相変わらずトラブル続きでしたが、何とか複数バージョンを使い分けられるようになりました。

(正しい方法か分からないので、「こうすれば良いよ」があれば教えてください)




オンラインプログラミングスクール
未来エンジニア養成所Logo