この前 SDKMANを使ったやり方を書きました。 みんな SDKMANを使っていないかもしれないので 今回は最も一般的なやり方を書いてみる。(多分非プログラマーもこんなやり方をするのでは?)
OracleサイトからJDK17を取得
これはダウンロードページへの直接リンクだが、グーグルで「Oracle java17 downloads」を検索するとOracleのダウンロードページがトップヒットとして出ると思う。
ページから 自分の環境に合うインストーラーをダウンロードし、実行する。zipファイルもあるが、インストーラーをお勧め。なぜならば適切な場所に配置してくれるからである。


インストールの確認
上記のインストーラーがMacOSが昔から期待する「/Library/Java/JavaVirtualMachines
ディレクトリーにJavaを配置する。その存在チェックを確認する。
Finder > New finder window > Cmd + Shift + G押下 > /Library/Java/JavaVirtualMachines
を入力する
標準的な場所なので 他のjava sdkもある可能性もある。今回jdk-17.sdkがあるので OK!
JAVA_HOMEを確認
JAVA_HOMEって何でしたっけ?というあなたへ ここクリックし、展開してください 😀
JAVA_HOMEという環境変数を正しく設定することで 色々なプログラム・アプリがデフォルトのJavaを知ることができて 他のプログラムに必要。
Android Studioを使う場合は GUIを使って選択できるので JAVA_HOMEをセットしていなくてokだが 他のアプリは大抵Javaを特別に選択するUIを用意してくれない。
例えば ターミナルjava --version
を実行すると JAVA_HOMEを定義していないと /Library/Java/JavaVirtualMachines
の中で最もバージョン高いものが得られる。JAVA_HOMEを定義していなくても /usr/libexec/java_home
がなんとかしてくれている。
% /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
% echo $JAVA_HOME
%
% java --version
java 21.0.1 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
今回は17を使いたいので JAVA_HOMEを定義することで java --versionの結果を変えることができる!
JAVA_HOMEが正しく設定される場所で定義する。~/.zshenv
で以下を追加
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
もしく java_homeコマンドを使って17を取得しJAVA_HOMEを設定することもOK
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
Java全体の確認
適当なターミナルを開いて、以下の二つのコマンドを打って、Java 17が表示される筈
% echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
%
% java --version
java 17.0.8 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
以上、これでJava使えるはず!
See you later! 🐊