macOSでJavaをディレクトリーごとに切り替える

macOSJDKをインストールする方法のメモです。

ゴール

Javaディレクトリーごとに切り替えられるようにします。

環境

macOS Sierra 10.12.3

jenvのインストー

ディレクトリーごとに切り替えられるようにするために、jenvをインストールします。

www.jenv.be

ただ、Java以外にも切り替えたいものがたくさんあるので、僕はanyenvでjenvをインストールしています。

github.com

anyenvのインストール:

$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.your_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.your_profile
$ exec $SHELL -l

jenvのインストール:

$ anyenv install jenv
$ exec $SHELL -l
$ anyenv version
jenv: system (set by /Users/user1/.anyenv/envs/jenv/version)

Javaのインストー

jenvからはJavaをインストールできないため、Homebrew Caskで入れます。

ちなみに、MacJDKが入る場所は3種類あり、Caskで入れた場合は2の /Library/Java/JavaVirtualMachines に入ります。

MacにおけるJDKのインストールパスは実は3種類あります。
1. /System/Library/Java/JavaVirtualMachines
2. /Library/Java/JavaVirtualMachines
3. /Users/yourname/Library/Java/JavaVirtualMachines

それぞれ、
1. Apple JDKのパス
2. 追加でインストールするJDKのパス
3. ユーザー毎にインストールするJDKのパス
という役割になっているみたいです。

(引用元:MacにJDK7をインストールしたからといってAppleのJDK6を消してはいけない - 北村聡士のブログ

Homebrew Caskとversionsのインストール:

$ brew tap caskroom/cask
$ brew tap caskroom/versions

JDKの最新版のインストール:

$ brew cask install java
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

ちなみに、java7は今現在は caskroom/versions からインストールできなくなっていますね。
Oracleのサイトでログインが必要になったとか・・・。

java7 download fails · Issue #3902 · caskroom/homebrew-versions · GitHub

Remove java7 by commitay · Pull Request #3914 · caskroom/homebrew-versions · GitHub

すべてのインストール済みバージョンの確認:

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    1.8.0_131, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

jenvで複数バージョンのJavaを管理

インストールしたJDKをjenvに登録

指定するパスは java_home コマンドで表示されたパスです。

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

確認

$ jenv versions
* system (set by /Users/user1/.anyenv/envs/jenv/version)
  1.8
  1.8.0.131
  oracle64-1.8.0.131

システムデフォルトのバージョンを設定

$ jenv global oracle64-1.8.0.131

特定ディレクトリーのバージョンを設定

$ cd ~/dev/java_project
$ jenv local oracle64-1.8.0.131

参考情報

macOS Sierra に anyenv で jenv をインストールし Java を管理してみる - 時と場合によりけり

MacにJava(JDK)をインストール - Qiita