javaの複数バージョンを扱う基礎

れむ
4 min readJan 11, 2018

jenvを使います

前提

Mac OSX 10.11
homebrewをインストールする事
homebrewの詳細とダウンロードはこちらから>>https://brew.sh/

準備

homebrew caskroom/versions を使って複数のJavaをインストールし管理する

> brew tap caskroom/versions
> brew cask search java
==> Exact Match
java ✔
==> Partial Matches
charles-applejava java-jdk-javadoc java8 netbeans-java-se
eclipse-java java6 netbeans-java-ee yourkit-java-profiler

> brew cask install java8
> brew cask install java6

これでjava6とjava8がダウンロードできます。
ちなみにjava7はオラクルアカウントを作って公式からダウンロードしないといけません(2018/01/11現在)
Oracle Javaバージョン7u25以下は、OS X上ではAppleによって無効にされています。
なのでbrewを使ってインストールする事ができなくなりました。

面倒ですがアカウント作ってインストールしてください

これができたらjavaのバージョン管理をしてくれるjenvを入れていきます。

>brew install jenv

これで準備は完了です。

jenvについて

jenvはpyenvのように複数のjavaのバージョンを持ち、切り替えをしたい時に常に便利なツールです。
jenvを使うと特定のディレクトリではjava7を、globalではjava8を使うという使いわけを可能にしてくれます。
公式はこちら>>http://www.jenv.be/

公式のinstallに従いインストールしたあとで
bashならば

$ echo ‘export PATH=”$HOME/.jenv/bin:$PATH”’ >> ~/.bash_profile
$ echo ‘eval “$(jenv init -)”’ >> ~/.bash_profile

zshならば

$ echo ‘export PATH=”$HOME/.jenv/bin:$PATH”’ >> ~/.zshrc
$ echo ‘eval “$(jenv init -)”’ >> ~/.zshrc

をしてshellの設定ファイルに対しての記載をしてください。jenvへ各種バージョンを追加してください。

> jenv add $(/usr/libexec/java_home -v 1.7)
> jenv add $(/usr/libexec/java_home -v 1.8)

追加されたバージョン確認をするには`jenv -versions`で確認できます。

> jenv versions
system
1.7
1.7.0.80
* 1.8 (set by /Users/hogehoge/.jenv/version)
1.8.0.131
oracle64–1.7.0.80
oracle64–1.8.0.131

システム全体で使うバージョンを設定する

システム全体でjava8を使うので

> jenv global 1.8

としてjava8に設定をします。

確認

> 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を使う場合

> mkdir hoge-java7
> cd hoge-java7
> jenv local java7

これでhoge-java7ディレクトリではjava7が有効になります

シェルの起動

> jenv exec zsh

JAVA_HOMEが自動で設定させるようにする

jenv は 環境変数JAVA_HOMEを 設定しません。
自動的に JAVA_HOME が設定されるようにするには

enable-plugin export

を設定します。

僕はこの処理をしなくてjava7を使っているディレクトリで実行処理をした時にjava8のJAVA_HOMEを使おうとしてエラーになっていたので気をつけてください。

解除したい時には`disable-plugin export` で解除できます。

--

--

れむ

ここには雑記やらなんやらを投げ込むよ/influencer marketing/softwareEngineer@SHIBUYA TOKYO