MacでJavaをインストール

Javaはクラスベースのオブジェクト指向プログラミング言語です。Javaの実行環境(Java Runtime Environment; JRE)を利用することで、ソースコードを変えずにさまざまなOS(Windows/Mac/Linux)で実行することができる。ここでは、MacにおけるJavaについて解説していきます。

01: インストール

Java

bash


# バージョンを指定してインストール可能なhomebrew versionsを導入
# brew tap: 公式以外のリポジトリを利用可能にする。
$ brew tap caskroom/versions

# インストール可能なJavaを表示
$ brew cask search java

# Javaをインストール
$ brew cask install java

# インストールされているJavaを表示
$ /usr/libexec/java_home -V

# インストールしたJavaを削除する場合
$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/

jenv

jenvは複数のJavaを管理するツールです。

bash


# jenvをインストール
$ brew install jenv

# .bash_profileを編集
$ nano ~/.bash_profile

# .bash_profileをリロード
$ source ~/.bash_profile

# 管理したいJDKを登録
$ jenv add $(/usr/libexec/java_home -v 1.8) 

# 管理対象のJDKを表示
$ jenv versions

# グローバル環境の切り替え
$ jenv global oracle64-1.8.0.131

# 特定のディレクトリにおいてJDKの切り替え
$ jenv local oracle64-1.8.0.131
$ cat .java-version

# 新規のJavaをインストール後に実行する。
# jenv(/usr/local/var/jenv/versions/*/bin/*)にすべてのJavanの実行ファイルに対応するshimesをインストールする。
$ jenv rehash

.bash_profile


...
# jenv
if which jenv > /dev/null; then
  # JENV_ROOTがemptyの場合、'${HOME}/.jenv'がrootとして設定される。
  export JENV_ROOT=/usr/local/var/jenv
  eval "$(jenv init -)"
fi

export

jenvはJAVA_HOMEを自動で設定しないので、JAVA_HOMEを自動で設定してくれるexportプラグインを追加する。

bash


# exportプラグインを追加
$ jenv enable-plugin export

# exportプラグインを確認
$ ls /usr/local/var/jenv/plugins

# jenv versionがsystemの場合、JAVA_HOMEの値が無効のパスに設定されるので、export_jenv_hook.bashを編集
nano /usr/local/var/jenv/plugins/export/etc/jenv.d/init/export_jenv_hook.bash

# exportプラグインを削除する場合
$ jenv disable-plugin export 

export_jenv_hook.bash


#export


 _jenv_export_hook() {
  if [ $(jenv javahome) != "/usr/local/var/jenv/versions/system" ]
  then
    export JAVA_HOME=$(jenv javahome)
    export JENV_FORCEJAVAHOME=true

    if [ -e "$JAVA_HOME/bin/javac" ]
    then
      export JDK_HOME=$(jenv javahome)
      export JENV_FORCEJDKHOME=true
    fi
  else
    unset JAVA_HOME
    unset JENV_FORCEJAVAHOME
    unset JDK_HOME
    unset JENV_FORCEJDKHOME
  fi
}

if ! [[ "$PROMPT_COMMAND" =~ _jenv_export_hook ]]; then
    PROMPT_COMMAND="_jenv_export_hook;$PROMPT_COMMAND";
fi


_jenv_export_hook

Eclipse

下記サイトからダウンロードして解凍/展開する。 複数のEclipseを管理したいので、解凍/展開したディレクトリを/usr/local/eclipseに移動する。 実行ファイルからエイリアスを作成し、エイリアスを「アプリケーション」フォルダに移動する。

02: Javaのパスについて

Javaのインストール先

  • /System/Library/Java/JavaVirtualMachines/
  • AppleのJDKがインストールされる。
  • /Library/Java/JavaVirtualMachines/
  • OracleのJDKがインストールされる。

/usr/bin/javaについて

bash


# /usr/bin/javaから呼び出されるJavaのバージョンはjava_homeコマンドで決定され、最新版が選択される。
# ただし、JAVA_HOMEが設定されていれば、設定されているJavaのバージョンが優先される。
$ ls -l /usr/bin/java
lrwxr-xr-x  1 root  wheel  74  2 14 13:30 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
total 8
drwxr-xr-x  10 root  wheel  340  4  6 13:08 A
lrwxr-xr-x   1 root  wheel    1  2 14 13:29 Current -> A