LoginSignup
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-23

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)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1