macOSにJava 17をインストールする方法
問題概要
HomebrewでJava 17をインストールしたのに、java -version
コマンドで確認すると古いバージョン(例: Java 13)が表示されるという問題が発生しています。これは、Java 17が正常にインストールされているにもかかわらず、システムが適切なバージョンを認識していないためです。
# Javaのバージョンを確認
java -version
# 出力: openjdk version "13.0.8" 2021-07-20
解決方法
方法1: シンボリックリンクを作成する(Homebrew)
HomebrewでインストールしたJava 17をシステムに認識させるには、シンボリックリンクを作成する必要があります。
# Apple Silicon(M1/M2)の場合
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
# Intel Macの場合
sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
その後、パスを通すことでJava 17を使用できるようになります:
# ~/.zshrc または ~/.bash_profile に追加
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
TIP
ターミナルを再起動するか、source ~/.zshrc
を実行して変更を適用してください。
方法2: JAVA_HOMEの設定
インストールされているJavaのバージョンを確認し、JAVA_HOMEを設定します。
# インストールされているJavaバージョンを一覧表示
/usr/libexec/java_home -V
# JAVA_HOMEをJava 17に設定
export JAVA_HOME=$(/usr/libexec/java_home -v17)
# 現在のJavaバージョンを確認
java -version
恒久的に設定するには、シェルの設定ファイルに追加します:
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v17)' >> ~/.zshrc
方法3: SDKMANを使用する(推奨)
複数のJavaバージョンを管理する場合は、SDKMANの使用がおすすめです。
# SDKMANのインストール
curl -s "https://get.sdkman.io" | bash
# 新しいシェルを開くか、以下のコマンドを実行
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 利用可能なJavaバージョンを表示
sdk list java
# Java 17のインストール(例: Temurin版)
sdk install java 17.0.9-tem
# 特定のバージョンを使用
sdk use java 17.0.9-tem
メリット
- 複数バージョンの簡単な切り替え
- プロジェクトごとに異なるバージョンを設定可能
- コマンド一つでアップデート可能
方法4: 直接ダウンロードしてインストール
パッケージマネージャーを使用せずに直接インストールする方法:
- AdoptiumからJava 17をダウンロード
- アーカイブを解凍して
/Library/Java/JavaVirtualMachines/
に配置
# ダウンロードしたファイルを解凍(例)
tar xzf OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.5_8.tar.gz -C /Library/Java/JavaVirtualMachines
インストール確認
正しくインストールされたか確認します:
# Javaバージョンの確認
java -version
# コンパイラの確認
javac -version
# インストール場所の確認
/usr/libexec/java_home -V
よくある問題と解決策
注意点
HomebrewでインストールしたJavaは「keg-only」として扱われ、システムパスに自動的にはリンクされません。シンボリックリンクの作成が必要です。
問題: java -version
で正しいバージョンが表示されない
解決策:
- JAVA_HOMEが正しく設定されているか確認
- シンボリックリンクが正しく作成されているか確認
- ターミナルを再起動して変更を適用
問題: 異なるプロジェクトで異なるJavaバージョンが必要
解決策:
- SDKMANを使用してバージョン管理
- エイリアスを設定して簡単に切り替え
# エイリアスの例
alias j17="export JAVA_HOME=$(/usr/libexec/java_home -v17); java -version"
alias j11="export JAVA_HOME=$(/usr/libexec/java_home -v11); java -version"
まとめ
macOSにJava 17をインストールする主な方法は以下の通りです:
- Homebrewを使用:
brew install openjdk@17
+ シンボリックリンク作成 - SDKMANを使用:複数バージョンの管理に最適
- 直接ダウンロード:パッケージマネージャーを使用しない場合
複数のJavaバージョンを扱う場合はSDKMAN、シンプルに単一バージョンのみ必要ならHomebrewを使用することをおすすめします。
正しくインストールできたら、IDE(IntelliJ IDEAなど)でプロジェクトのJDK設定を更新することを忘れないでください。