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参照。