開発環境に応じて、MacでJavaVersionの切り替え方法をまとめました。
手動で設定ファイル書き換えを行う手順と、カスタムエイリアスで実現する手順を試してみます。
前提
- OS
- Mac / Mojave
- 実行シェル
- fish shell
設定ファイル書き換えで切り替える場合(手動)
Javaのフルパス検索
まずは、whichコマンドでJavaのフルパスを確認します。
~ ❯❯❯ which java
/usr/bin/java
コマンドの実行結果を見ると、Javaのフルパスはシンボリックリンクになっているので「/System」から始まっているフルパスの方を「ls -la」コマンドで調べます。
~ ❯❯❯ ls -al /usr/bin/java
lrwxr-xr-x 1 root wheel 74 1 16 2019 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
インストールされているJavaの確認
確認した「/System」から始まるJavaフルパスをもとに、Javaのバージョンを確認します。
~ ❯❯❯ /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -V
Matching Java Virtual Machines (4):
14, x86_64: "OpenJDK 14" /Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
11.0.7, x86_64: "Java SE 11.0.7" /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
1.8.0_251, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
1.8.0_212, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
今回はjdk11に設定したいのでfish shellにパスを通します。
vimコマンドで、config.fishを開きます。
~ ❯❯❯ vim ~/.config/fish/config.fish
以下内容をコピペで追加します。(ユニバーサルで追加,全てのセッションで有効)
※追加したら、ファイル保存も忘れずに。
set -U JAVA_HOME (/usr/libexec/java_home -v 11)
設定(config.fish)読み込み
修正した config.fishを読み込みます。
source ~/.config/fish/config.fish
再度JavaのVersionの確認
再度JavaのVersionを確認してみます。
config.fish に追加したJavaのVersionが表示されました!
~ ❯❯❯ java -version
java version "11.0.7" 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
カスタムエイリアスで実現する場合(パス書き換えなし)
こちらのサイトを参考にさせて頂きました。
ファイルを配置すればカスタムしたエイリアスで切り替えられます。
function javaenv
if test (count $argv) -eq 0
/usr/libexec/java_home -V
else
switch $argv[1]
case 'ls'
/usr/libexec/java_home -V
case 'set'
set -xU JAVA_HOME (/usr/libexec/java_home -v $argv[2])
end
end
end
インストールされているJavaの確認
javaenvコマンドで、JavaのVerisonを確認します。
~ ❯❯❯ javaenv
Matching Java Virtual Machines (4):
14, x86_64: "OpenJDK 14" /Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
11.0.7, x86_64: "Java SE 11.0.7" /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
1.8.0_251, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
1.8.0_212, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
JavaのVersion切り替え
javaenvコマンドで指定のJavaVersionを設定(set)し、「java -version」で確認してみます。
~ ❯❯❯ javaenv set 1.8 && java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
~ ❯❯❯ javaenv set 11 && java --version
java 11.0.7 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
設定したJavaのVersionを確認することができました。
こっちの手順の方が楽だ!