色々な案件を転々としていると、Javaのバージョンをしょっちゅう切り替えないといけないことがありますよね。
シェルスクリプトの勉強を兼ねて、Javaのバージョンを簡単に切り替えられるスクリプトを作ってみました。
参考サイト:OSXでJavaのバージョンを切り替える
Javaのバージョンを確かめる
$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
今更書くまでもないが、java -version
でバージョンを確認できる
java_homeコマンド
java_home
コマンドは、/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands
にあるコマンドで、引数にバージョンを与えると、そのバージョンのJavaがインストールされているパスを返す
$ /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v 1.6
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
$ /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
1.6と1.8ではインストールされているパスが違う
バージョンによる違いかと思っていたが、参考サイトによると、どうやらJavaの提供元によってインストール場所が違うようだ
Javaへのパスを通すときに、このコマンドを使うことによって、マイナーバージョン違いや、インストールパスの差異を吸収することができる
シェルスクリプトを書く
.bash_profileの内容をsedで置換して、それを一旦バックアップに保存し、それを./bash_profileに上書きする1
#!/bin/sh
2 VERSION=$1
3
4 cat .bash_profile | sed "s/java_home -v \"1.[0-9]\"/java_home -v \"$VERSION\ "/" > tmp.sh
5
6 mv tmp.sh .bash_profile
source .bash_profile
を最後に書いていたのだが、どうもうまくいかないのでとりあえずこれでよしとする
このファイルをホームディレクトリなりに置いて、実行してからsource .bash_profile
を実行する2
$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
$ sudo ./change-java-version.sh 1.7
Password:
$ source .bash_profile
$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
これでコマンド2つで(ホントは1つにしたかった)Javaのバージョン切り替えができるようになった