プロジェクト

全般

プロフィール

MacOS JDK環境

macOSにJava開発キット(Java Development Kit: JDK)をインストールしてJDKのコマンドを実行できるようにする設定を記載します。

JDKのインストールディレクトリ

/Library/Java/JavaVirtualMachines

macOSでは、JDKは /Library/Java/JavaVirtualMachines/ ディレクトリの下に、ディストリビューション・バージョンのディレクトリとしてインストールされます。

例) とあるmacOS環境で、Azul SystemsのZulu 11、Bell SoftwareのLiberia JDK 17 Full版、Oracle OpenJDK 20の3つがインストールされている状況を次に示します。

~ % ls /Library/Java/JavaVirtualMachines 
liberica-jdk-17-full.jdk    zulu-11.jdk
openjdk.jdk

macOSでは、JDKのコマンド(java, javac, jar, javadoc, javapackager, jcmd, jeeps, ...)が、/usr/bin/ の下に格納されます。
/usr/bin/ にはデフォルトでPATHが通っているので、追加のPATHを設定しなくてもJDKのコマンドが実行できます。

では、複数のJDKをインストールしているmacOS環境では、/usr/bin/の下のjavaコマンドを実行すると、どのJDKが実行されるでしょうか?

それは、/usr/libexec/java_homeコマンドで確認できます。

/usr/libexec/java_home

現在選択されているJDKのパスを表示

macOS環境で /usr/libexec/java_home コマンドをオプションなしで実行すると現在選択されている JDK のパスが表示されます。

 ~ % /usr/libexec/java_home   
/opt/homebrew/Cellar/openjdk/20.0.1/libexec/openjdk.jdk/Contents/Home
 ~ %

インストールされているJDKのリストを表示

/usr/libexec/java_home コマンドをオプション-V(大文字の'V')を指定して実行すると、インストールされているJDKのリストと現在選択されているJDKのパスが表示されます。

~ % /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    20.0.1 (arm64) "Homebrew" - "OpenJDK 20.0.1" /opt/homebrew/Cellar/openjdk/20.0.1/libexec/openjdk.jdk/Contents/Home
    17.0.7+7-LTS (arm64) "BellSoft" - "BellSoft Liberica JDK 17.0.7+7" /Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home
    11.0.20 (arm64) "Azul Systems, Inc." - "Zulu 11.66.15" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
/opt/homebrew/Cellar/openjdk/20.0.1/libexec/openjdk.jdk/Contents/Home

現在選択されているJDKは、最もバージョンが大きい(新しい)JDKとなります。

環境変数JAVA_HOME

/usr/libexec/java_homeコマンドは、インストールされているJDKのリストを表示し、デフォルトの(最も大きいバージョンの)JDKのパスを表示します。
デフォルト以外のJDKを使用したい場合は、環境変数JAVA_HOMEにJDKのパスを設定します。

環境変数JAVA_HOMEへの設定

/usr/libexec/java_home コマンドをオプション-v バージョン番号(小文字の'v')を指定して実行すると、指定したバージョン番号のJDKのパスが返ります。

~ % /usr/libexec/java_home -v 17
/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home

このパスを、環境変数JAVA_HOMEに設定します。

~ % export JAVA_HOME=$(/usr/libexec/java_home -v 17)
~ % echo $JAVA_HOME                          
/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home

~ % java --version                                  
openjdk 17.0.7 2023-04-18 LTS
OpenJDK Runtime Environment (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM (build 17.0.7+7-LTS, mixed mode, sharing)

起動時にJAVA_HOMEを設定

毎回設定するのは大変なので、シェル環境を起動するときに環境変数JAVA_HOMEを設定するようにします。
~/.zshrc に次の設定を追加します。

# OpenJDK setting
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

JDKのインストール

Homebrew経由でインストールする記載は、Homebrew参照。


11ヶ月前に更新