Macにjava 1.7.0をインストール
背景
Mac OSX 10.7.5において、java 1.7.0をインストールしたときのこと。
java公式からVersion 7 Update 25をダウンロードし、インストールしてみても、
$ java -version
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
と1.6.0から変わっていない。
以前までなら/Applications/Utilities/Java Preferences.app
を起動して実行バージョンの優先度を入れ替えるだけで済んだのだが、Java Preferences.app
が無くなっている・・・
Mac OSX 10.8.4のまっさらな状態のマシンに同じくjava 1.7.0してみても、javaコマンドを打ってみると1.7.0は認識されておらず、1.6.0のインストールのダイアログが出てしまう。
調査
MacにおけるJavaの構成は中々に厄介だ。
以前からJavaをインストールしてあったOSX 10.7.5において、Javaコマンドの向き先を見てみると
$ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxr-xr-x 1 74B 6 25 22:53:25 2013 /usr/bin/java@ -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
$ cd /System/Library/Frameworks/JavaVM.framework/Versions/
$ ls -l
total 64
lrwxr-xr-x 1 10B 6 25 22:53:25 2013 1.4@ -> CurrentJDK
lrwxr-xr-x 1 10B 6 25 22:53:25 2013 1.4.2@ -> CurrentJDK
lrwxr-xr-x 1 10B 6 25 22:53:25 2013 1.5@ -> CurrentJDK
lrwxr-xr-x 1 10B 6 25 22:53:25 2013 1.5.0@ -> CurrentJDK
lrwxr-xr-x 1 10B 6 25 22:53:25 2013 1.6@ -> CurrentJDK
lrwxr-xr-x 1 10B 6 25 22:53:25 2013 1.6.0@ -> CurrentJDK
drwxr-xr-x 8 272B 6 25 23:37:11 2013 A/
lrwxr-xr-x 1 1B 6 25 22:53:26 2013 Current@ -> A
lrwxr-xr-x 1 59B 6 25 22:53:25 2013 CurrentJDK@ -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
A
って何だよと思うのですが、Appleの解説によると、異なるバージョン毎にA
,B
とディレクトリを分けるらしい。
1.7.0はこのディレクトリには入っていません。
何処にあるかというと/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
$ pwd
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
$ ./java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
ありました。
解決策
/System/Library/Frameworks/JavaVM.framework/Versions
に1.7.0へのシンボリックリンクを作成します。
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/ /System/Library/Frameworks/JavaVM.framework/Versions/1.7.0
そしてzshrc
やbashrc
にJAVA_HOME
を設定します。
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.7.0"
10.8.5の場合
/etc
に以下の内容のlaunchd.conf
を作成して再起動でもOK
setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.7.0