Skip to content

macOSにJava 17をインストールする方法

問題概要

HomebrewでJava 17をインストールしたのに、java -versionコマンドで確認すると古いバージョン(例: Java 13)が表示されるという問題が発生しています。これは、Java 17が正常にインストールされているにもかかわらず、システムが適切なバージョンを認識していないためです。

bash
# Javaのバージョンを確認
java -version
# 出力: openjdk version "13.0.8" 2021-07-20

解決方法

方法1: シンボリックリンクを作成する(Homebrew)

HomebrewでインストールしたJava 17をシステムに認識させるには、シンボリックリンクを作成する必要があります。

bash
# 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を使用できるようになります:

bash
# ~/.zshrc または ~/.bash_profile に追加
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

TIP

ターミナルを再起動するか、source ~/.zshrcを実行して変更を適用してください。

方法2: JAVA_HOMEの設定

インストールされているJavaのバージョンを確認し、JAVA_HOMEを設定します。

bash
# インストールされているJavaバージョンを一覧表示
/usr/libexec/java_home -V

# JAVA_HOMEをJava 17に設定
export JAVA_HOME=$(/usr/libexec/java_home -v17)

# 現在のJavaバージョンを確認
java -version

恒久的に設定するには、シェルの設定ファイルに追加します:

bash
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v17)' >> ~/.zshrc

方法3: SDKMANを使用する(推奨)

複数のJavaバージョンを管理する場合は、SDKMANの使用がおすすめです。

bash
# 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: 直接ダウンロードしてインストール

パッケージマネージャーを使用せずに直接インストールする方法:

  1. AdoptiumからJava 17をダウンロード
  2. アーカイブを解凍して /Library/Java/JavaVirtualMachines/ に配置
bash
# ダウンロードしたファイルを解凍(例)
tar xzf OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.5_8.tar.gz -C /Library/Java/JavaVirtualMachines

インストール確認

正しくインストールされたか確認します:

bash
# Javaバージョンの確認
java -version

# コンパイラの確認
javac -version

# インストール場所の確認
/usr/libexec/java_home -V

よくある問題と解決策

注意点

HomebrewでインストールしたJavaは「keg-only」として扱われ、システムパスに自動的にはリンクされません。シンボリックリンクの作成が必要です。

問題: java -versionで正しいバージョンが表示されない

解決策:

  • JAVA_HOMEが正しく設定されているか確認
  • シンボリックリンクが正しく作成されているか確認
  • ターミナルを再起動して変更を適用

問題: 異なるプロジェクトで異なるJavaバージョンが必要

解決策:

  • SDKMANを使用してバージョン管理
  • エイリアスを設定して簡単に切り替え
bash
# エイリアスの例
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をインストールする主な方法は以下の通りです:

  1. Homebrewを使用brew install openjdk@17 + シンボリックリンク作成
  2. SDKMANを使用:複数バージョンの管理に最適
  3. 直接ダウンロード:パッケージマネージャーを使用しない場合

複数のJavaバージョンを扱う場合はSDKMAN、シンプルに単一バージョンのみ必要ならHomebrewを使用することをおすすめします。

正しくインストールできたら、IDE(IntelliJ IDEAなど)でプロジェクトのJDK設定を更新することを忘れないでください。