【Mac】Java JDK を複数バージョンインストールして管理

ちょっと特殊かもしれないですが、複数のJava JDKのバージョンを使い分けたいことがあり、Homebrewにて管理できるようにした時のメモです。

1. Homebrewのインストール
こういうことをやろうとしている人は既にインストール済みの場合が多いかもしれないですが、まだの人は下記などを参考にインストールしてください。
Homebrewのインストール

2. brew-cask のインストール
brew-cask とは、アプリをインストールする際に使用するHomebrewの拡張機能の一つです。
公式サイトによると、Google Chromeなんかもインストールできるようですね。

今回はそれを使うので、下記コマンドにてインストールします。

1
2
$ brew tap caskroom/cask
$ brew install brew-cask

出力結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
==> Installing brew-cask from caskroom/cask
==> Cloning https://github.com/caskroom/homebrew-cask.git
Cloning into '/Library/Caches/Homebrew/brew-cask--git'...
remote: Counting objects: 3408, done.
remote: Compressing objects: 100% (3368/3368), done.
remote: Total 3408 (delta 54), reused 523 (delta 19), pack-reused 0
Receiving objects: 100% (3408/3408), 5.88 MiB | 1.20 MiB/s, done.
Resolving deltas: 100% (54/54), done.
Checking connectivity... done.
Note: checking out 'b4c92f3658d47712aa6114fb29be50a763cf78ee'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
==> Checking out tag v0.60.1
==> Caveats
You must uninstall this formula. It is no longer needed to stay up to date,
as Homebrew now takes care of that automatically.
==> Summary
/usr/local/Cellar/brew-cask/0.60.1: 4 files, 7.8K, built in 17 seconds

3. homebrew-cask-versions をインストール

1
brew tap caskroom/versions
1
2
3
4
5
6
7
8
9
==> Tapping caskroom/versions
Cloning into '/usr/local/Library/Taps/caskroom/homebrew-versions'...
remote: Counting objects: 277, done.
remote: Compressing objects: 100% (272/272), done.
remote: Total 277 (delta 65), reused 43 (delta 2), pack-reused 0
Receiving objects: 100% (277/277), 95.10 KiB | 0 bytes/s, done.
Resolving deltas: 100% (65/65), done.
Checking connectivity... done.
Tapped 0 formulae (292 files, 381.5K)

4. JDK をインストール
下記コマンドにてjavaのバージョンを検索すると、

1
brew cask search java

現時点で、次のような結果となっていました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
==> Tapping caskroom/versions
Cloning into '/usr/local/Library/Taps/caskroom/homebrew-versions'...
remote: Counting objects: 277, done.
remote: Compressing objects: 100% (272/272), done.
remote: Total 277 (delta 65), reused 43 (delta 2), pack-reused 0
Receiving objects: 100% (277/277), 95.10 KiB | 0 bytes/s, done.
Resolving deltas: 100% (65/65), done.
Checking connectivity... done.
Tapped 0 formulae (292 files, 381.5K)
lab3-34% brew cask search java
==> Exact match
java
==> Partial matches
charles-applejava java-beta java9-beta
charles-beta-applejava java6 yourkit-java-profiler
eclipse-java java7

なので最新バージョンとjava7をインストールしておきました。

1
2
3
$ brew cask install java
$ brew cask install java7

5. jEnv のインストール
すでにパスを切り替えれば複数バージョン使い分けられるのですが、面倒なので jEnv にて切り替えられるようにします。

1
$ brew install jenv

完了したらパスを通します。

1
2
3
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc
$ source ~/.zshrc

次に、jenvに各バージョンを登録します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
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
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
oracle64-1.8.0.77 added
1.8.0.77 added
1.8 added
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
oracle64-1.7.0.80 added
1.7.0.80 added
1.7 added
$ jenv versions
* system (set by /Users/lab3-34/.jenv/version)
1.7
1.7.0.80
1.8
1.8.0.77
oracle64-1.7.0.80
oracle64-1.8.0.77

切り替えは次のように行います。

1
2
3
4
5
6
$ jenv global 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)

参考
http://kendik.hatenablog.com/entry/2015/09/02/013207