LoginSignup
102
93

More than 5 years have passed since last update.

jenv使ってJDKのバージョン管理

Last updated at Posted at 2015-04-05

最近は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とかと一緒ですね。

参考ページ

102
93
0

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
102
93