最近はJava8の記事がよくでてきてますよね。
私も「まずはためしに使ってみよう!」って始めようとした時、
- あれ、今入っているJava7はどうなるんだろ?
- Java8入れるとシステムデフォもJava8になるのかも
- シンボリックリンクとかゴニョゴニョとか?うーん、めんどうそう...
となりました。
ただ、GVMとかpyenvとかすでに使ってたので、もしかしてJavaにもxxenvがあるのかも?
と探したらありました。
jEnv - http://www.jenv.be/
これを使うと、システムのデフォルトはJava7、このプロジェクトフォルダはJava8とか
できて、JAVA_HOMEやらシンボリックリンクやら頑張らなくてもよくなります。
インストール
http://www.jenv.be/ にとても簡単にまとまってます。
私はOSX使っているので、Homebrewでいれました。
$ brew install jenv
その後、jenvへのパスを通すようにします。
.bashrcとか.bash_profileらへんに以下のような追記を。
if which jenv > /dev/null; then
# JENV_ROOTがemptyの場合、'${HOME}/.jenv'がrootと設定される
export JENV_ROOT=/usr/local/var/jenv
eval "$(jenv init -)"
fi
で、source ~/.bashrc
して反映
次にjenvへ管理したいJDKを登録します。
私のOSXだと、こんな感じ。面倒だったので6から8まで入れました。
$ jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
jenv versions
と叩くと、管理対象になったバージョンがリストアップされます
リストアップ内容はインストール環境によって異なるかも。
$ jenv versions
system
1.6
1.6.0.65
1.7
1.7.0.60
1.8
1.8.0.25
oracle64-1.6.0.65
* oracle64-1.7.0.60 (set by /usr/local/opt/jenv/version)
oracle64-1.8.0.25
使い方の例
システムデフォルトはjava7にして、特定のフォルダのみjava8使う
システムデフォルトをJava7に
jenv global {version}
でシステムデフォルトのJDKを設定
$ jenv global oracle64-1.7.0.60
$ java -version
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
java8-hogeフォルダはJava8に
jenv local {version}
で指定ディレクトリでのJDKを設定
$ mkdir java8-hoge && cd java8-hoge
$ jenv local oracle64-1.8.0.25
$ java -version
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
java8-hogeのディレクトリをみると、.java-version
ファイルができてます。
$ ls -la
total 8
drwxr-xr-x 3 jyotti staff 102 4 5 18:14 .
drwxr-xr-x 4 jyotti staff 136 4 4 20:33 ..
-rw-r--r-- 1 jyotti staff 18 4 5 18:15 .java-version
$ cat .java-version
oracle64-1.8.0.25
javaコマンドはどうなってんの?
$ type java
java はハッシュされています (/usr/local/opt/jenv/shims/java)
pyenvとかと一緒ですね。