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もバージョン表示されました)
相変わらずトラブル続きでしたが、何とか複数バージョンを使い分けられるようになりました。
(正しい方法か分からないので、「こうすれば良いよ」があれば教えてください)