Edited at

javaのバージョン切り替えを簡単にする(Mac)

java のverison切り替えするのが少しだけ面倒でしたので、bashの関数にしてコマンドのように利用できるようにしました。

参考:

http://shinsuke789.hatenablog.jp/entry/2017/08/16/103000

https://qiita.com/ponsuke0531/items/795cd00d93b71c14d07b


bash追加内容

1.~/.bash_profile を編集

$vi ~/.bash_profile

2.下記を追記


~/.bash_profile

#!/bin/bash

# PATH初期化
export PATH=/sbin:/bin:/usr/bin:/usr/local/bin:/usr/sbin

#~~~ 普段~/.bash_profileでやっている処理 ~~~
# ~/.use-java-version
if [ -f ~/.use-java-version ]; then
export JAVA_HOME=$(cat ~/.use-java-version)
else
# わたしはデフォルトはjava8にしている
/usr/libexec/java_home -v 1.8 | tee ~/.use-java-version
export JAVA_HOME=$(cat ~/.use-java-version)
fi
export PATH=$JAVA_HOME/bin:$PATH

function lsjava () {
# インストール済みのjavaを出力
echo -e "\033[0;33mInstalled java version:\033[0;39m"
/usr/libexec/java_home -V
# 現在利用中のjavaを出力
echo -e "\n\033[0;33mCurrent specificed java version:\033[0;39m"
java -version
}
function chjava () {
# パラメータが指定されてなかったら
if [ -z "$1" ]; then
echo -e "Please specific java version. \nex)\n\$ chjava 1.8"
return 1
fi
/usr/libexec/java_home -v $1
local checkJavaVersion=$?
# 指定したjavaバージョンがインストールされてなかったら
if [ $checkJavaVersion -ne 0 ]; then
echo "Please specific installed java version."
echo Java $1 is not installed.
return 2
fi
echo Use java $1.
/usr/libexec/java_home -v $1 | tee ~/.use-java-version
# ~/.use-java-versionに利用するjavaのpath出力されたので、上の方のif [ -f ~/.use-java-version ]のところで、PATHに追加されるようになる
source ~/.bash_profile
# PATHを表示
echo PATH=$PATH
                # 利用中のjava versionを表示
java -version
return 0
}


3.修正したbash_profileを読み込み。

$source ~/.bash_profile


機能


java version切り替え

$chjava [javaのバージョン] で行う

#java10を指定

$chjava 10.0

#java8を指定
$chjava 1.8


エラーハンドリング

#パラメータを忘れた場合

$chjava
Please specific java version.
ex)
$ chjava 1.8

#インストールされていないjava versionが指定された場合
$chjava 1.9
Unable to find any JVMs matching version "1.9".
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Please specific installed java version.
Java 1.9 is not installed.


現在インストール済みのjava version&利用中のversion

$lsjava で行う

$lsjava

Installed java version:
Matching Java Virtual Machines (3):
10.0.1, x86_64: "Java SE 10.0.1" /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
1.8.0_101, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home

Current specificed java version:
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)