未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

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