ハマログ

株式会社イーツー・インフォの社員ブログ

jEnvで複数のJava SDKを使い分ける

素性のよくわからぬJavaの案件を引き継ぐことになり、その案件はJava7を必要としていました。もう1つ別の案件がJava8であることもあり、2つのバージョンのJDKを共存させる必要に迫られました。

IDEとしてEclipseを使っているので、普通にJava7 SDKをインストーラーからインストールして、Eclipse側でプロジェクトのJREを新たにインストールしたJava7にしてあげればそれで終わりなのですが、Javaにはpyenvやnodebrewみたいにバージョンを切り替える方法はないのかと探してみたところ、jEnvというものを見つけました。

jEnv自体はMacの場合、Homebrewでインストールできます。残念ながらWindowsには対応していないようです。

$ brew install jenv

次にjEnvへのPathを通します。自分は.bashrcに以下を追記しました。

if which jenv > /dev/null; then
  export PATH="$HOME/.jenv/bin:$PATH"
  eval "$(jenv init -)"
fi

次にjEnvに管理するJDKを追加します。

jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

「jenv versions」とコマンドを打つことで、現在利用できる(切り替えられる)Javaのバージョンがリストアップできます。

YHNP025:~ xxxxxx$ jenv versions
  system
  1.7
  1.7.0.80
  1.8
  1.8.0.102
  oracle64-1.7.0.80
* oracle64-1.8.0.102 (set by /Users/xxxxxx/.jenv/version)
YHNP025:~ xxxxxx$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

今はシステム全体のJavaのバージョンがJava8になっています。これをJava7に変更したい場合は以下 「jenv global (Javaバージョン)」コマンドで可能です。

YHNP025:~ xxxxxx$ jenv global oracle64-1.7.0.80
YHNP025:~ xxxxxx$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

システム全体のJavaバージョンがJava7に変わりました。さらにjEnvでは特定ディレクトリ以下のJavaのバージョンのみを変更することが可能です。任意のJavaバージョンを使いたいディレクトリ直下で「jenv local (Javaバージョン)」コマンドにより可能となります。

YHNP025:~ xxxxxx$ mkdir jEnvTest
YHNP025:~ xxxxxx$ cd jEnvTest
YHNP025:jEnvTest xxxxxx$ pwd
/Users/xxxxxx/jEnvTest
YHNP025:jEnvTest xxxxxx$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
YHNP025:jEnvTest xxxxxx$ jenv local oracle64-1.8.0.102
YHNP025:jEnvTest xxxxxx$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

上記一連の流れで、jEnvTestディレクトリ内でのJavaバージョンがJava7からJava8に変わっています。
jEnvTestディレクトリから出て、再度Javaのバージョンを調べてみましょう。

YHNP025:jEnvTest xxxxxx$ cd ../
YHNP025:~ xxxxxx$ pwd
/Users/xxxxxx
YHNP025:~ xxxxxx$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

システムグローバルで設定したJava7になっています。


Shin.A   Shin.A   2017年3月30日


関連記事

Laravelのテンプレート内でURLによる条件判定を実装する

Laravelのテンプレート(blade)内で、URLによる条件判定を実装する方…

MySQL Tips

自分メモ用に。 — 全てのデータベースのサイズを確認する select tab…


← 前の投稿

次の投稿 →