LoginSignup
3
3

More than 5 years have passed since last update.

Javaのバージョンを簡単に切り替える

Last updated at Posted at 2015-11-10

色々な案件を転々としていると、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

change-java-version.sh
#!/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のバージョン切り替えができるようになった


  1. 直接.bash_profileに上書きしようとしたら、.bash_profileが真っ白になってしまった。どうやら、自分自身を書き換えるのはご法度らしい(教えてくれたみうみうさんありがとう) 

  2. カッコ悪いのでシェルスクリプトの中に組み込みたい。教えて、エラい人 

3
3
2

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
3
3