「jEnv」とは?

Javaの環境管理ツールです。jEnvを導入することにより、簡単にJavaのバージョンを切り替えて使うことができるようになります。
Pythonでいうpyenvです。操作方法もほぼ同様です。

環境

  • OS:macOS High Sierra 10.13.1
  • Homebrew:1.5.13
  • jEnv:0.4.4

セットアップ

jEnvのインストール

Homebrewからインストールします。

$ brew update
$ brew install jenv

.bash_profile に以下を追記し、パスを通します。

.bash_profile
# jEnv
export JENV_ROOT="$HOME/.jenv"
if [ -d "${JENV_ROOT}" ]; then
  export PATH="$JENV_ROOT/bin:$PATH"
  eval "$(jenv init -)"
fi

JDKのインストール

brew cask でインストールしている記事が多いですが、今回はOracleからインストーラを落としてきて手動でインストールします。
以下の記事を参考にして必要なバージョンのJDKをインストールします。

※複数のバージョンをインストールする場合、古いバージョンから行う必要があります。
すでに新しいバージョンがインストールされている場合、以下の記事を参考にアンインストールしてから行う必要があります。

上記を行うとJavaの開発環境が潤います。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (5):
    10, x86_64: "Java SE 10"    /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home
    9.0.4, x86_64:  "Java SE 9.0.4" /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_77, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home

おそらく全て使うことはないですが、何となく気持ちいいのでJDK 7〜10を全てインストールしてみました。

.jenvフォルダの作成

~/.jenv/versions フォルダを手動で作成します。

$ mkdir ~/.jenv
$ mkdir ~/.jenv/versions

作成しないと jenv addln: failed to create symbolic link '/Users/{ユーザー名}/.jenv/versions/oracle64-1.7.0.80': No such file or directory エラーが発生します。
https://github.com/gcuisinier/jenv/issues/175

作成したら .bash_profile を再読み込みします。

$ source ~/.bash_profile

jEnv環境の追加

最初はjEnvに環境が1つもありません。

$ jenv versions
* system (set by /Users/{ユーザー名}/.jenv/version)

jenv add コマンドで環境を追加します。

# jenv add {Java Virtual Machine(JVM) Homeのパス}
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home

JVM Homeのパスは /usr/libexec/java_home -V コマンドで出力されるパスのことです。

メジャーバージョンが同じ環境がすでに追加されている場合、上書き確認されるので y を入力すればOKです。

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
oracle64-1.8.0.162 added
1.8.0.162 added
There is already a 1.8 JDK managed by jenv
Do you want to override (type y to confirm)? y
1.8 added

これでjEnvの環境も潤いました。

$ jenv versions
* system (set by /Users/{ユーザー名}/.jenv/version)
  1.7
  1.7.0.80
  1.8
  1.8.0.162
  1.8.0.77
  10
  9.0
  9.0.4
  oracle64-1.7.0.80
  oracle64-1.8.0.162
  oracle64-1.8.0.77
  oracle64-10
  oracle64-9.0.4

操作方法

Java環境の切替(グローバル)

jenv global コマンドでグローバルのJava環境を設定します。
Java 10はリリースされたばかりでまだKotlinも対応していないようなので、ここではJava 9を設定します。

# グローバルのJava環境を設定する
# jenv global {環境名}
$ jenv global oracle64-9.0.4

Java 9でも「9.0」「9.0.4」「oracle64-9.0.4」と3つの環境がありますが、公式サイトのチュートリアルでは「oracle64…」を設定しているので、ここでもそのようにしています。
何が異なるのかは調べていません。

環境が切り替わったか確認します。「oracle64-9.0.4」の先頭に「*」が付いていれば環境が切り替わっています。

$ jenv versions
  system
  1.7
  1.7.0.80
  1.8
  1.8.0.162
  1.8.0.77
  10
  9.0
  9.0.4
  oracle64-1.7.0.80
  oracle64-1.8.0.162
  oracle64-1.8.0.77
  oracle64-10
* oracle64-9.0.4 (set by /Users/{ユーザー名}/.jenv/version)

Javaのバージョンも確認しておきます。

$ java --version
java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

環境が切り替わっていることが確認できます。

(2018/04/04 23:30 追記)

Java 9だとGradleがうまく動かなかったのでJava 8を使うことにしました。
https://qiita.com/uhooi/items/c9caa9a9ed6c934a789b#gradleのインストール

Java環境の切替(ローカル)

ローカル(特定のフォルダ以下のみ)のJava環境を設定する場合、対象のフォルダへ移動したあとに jenv local コマンドで設定できます。

$ mkdir java7
$ cd java7
$ jenv local oracle64-1.7.0.80
$ 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)

## ローカル設定していないフォルダはグローバル設定が適用される
$ cd ..
$ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

おわりに

Javaの開発環境が整いました。
これでAndroid StudioやKotlinを使っていろいろ遊べます!

参考リンク

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.