おのれのMacのjdkをどのようにしてくれようかについて

結局どうしておこうかなということで結論は出ていないのだけれど、書きながら試しながら結論めいたものが見えてくるかもしれないなということで見切り発車で書き始めているのです。

おそらくインストーラは無いような雰囲気のOS10.6のjdk1.5と先日インストールしてEclipseからも参照するように設定したソース付きdev用の1.6jdkを切り替えられるようにしておきたい(シンボリックリンクかなんかでやるのがよさそう)

jdk1.5をダウンロードして解凍

ここに書いてある。


tmpに移動して、curlコマンドでダウンロードして、tarで解凍

cd /tmp/
curl -o java.1.5.0-leopard.tar.gz http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz
tar -xvzf java.1.5.0-leopard.tar.gz


解凍してできたフォルダ1.5.0を1.5.0-leopardと言う名前にリネームして/System/Library/Frameworks/JavaVM.framework/Versions/配下に移動

sudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard

混乱しそうだ!状況確認

上記作業を実施した今現在の私のマシンの/System/Library/Frameworks/JavaVM.framework/Versionsの配下はこんな感じになっている(先日調査したインストール直後の状態とは違っているね。いろいろいじってたからなー)

ls -laF
drwxr-xr-x  15 root  wheel  510  5  6 22:57 ./
drwxr-xr-x  12 root  wheel  408  5  3 23:14 ../
lrwxr-xr-x   1 root  wheel    5  5  3 23:13 1.3@ -> 1.3.1
drwxr-xr-x   3 root  wheel  102 12  3  2009 1.3.1/
lrwxr-xr-x   1 root  wheel   10  5  3 23:13 1.4@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 23:13 1.4.2@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 23:13 1.5@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 23:13 1.5.0@ -> CurrentJDK
drwxr-xr-x   9 teru  wheel  306  2 15  2009 1.5.0-leopard/
lrwxr-xr-x   1 root  wheel   10  5  3 23:13 1.6@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 23:13 1.6.0@ -> CurrentJDK
drwxr-xr-x  10 root  wheel  340  5  3 23:14 A/
lrwxr-xr-x   1 root  wheel    1  5  3 23:14 Current@ -> A
lrwxr-xr-x   1 root  wheel   63  5  3 23:28 CurrentJDK@ -> /Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents
drwxr-xr-x   3 root  wheel  102  5  3 23:07 disabled/


先日調査によればデフォルトはAの中のJDKを参照していたようだったよね。それで今回はこちらを参考にさせてもらって、JAVA_HOMEを以下のように設定して、/usr/bin/javaよりも上にPATHを設定する。というか自分でそうしていたようだ。


具体的にはHomeに.bash_profileを作っているっぽい。(←記憶に無い)(←記録すべきだ)

cat ~/.bash_profile
export M2_HOME=/Applications/maven
export CATALINA_HOME=/Applications/tomcat
export JAVA_HOME=/Library/Java/Home
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH

M2_HOMEとCATALINA_HOMEもそれぞれシンボリックリンクですが、ここでは詳細は置いておきます。そのうち記録する。

ls -laF /Library/Java | grep Home
lrwxr-xr-x   1 root  admin    48  5  3 23:13 Home@ -> /System/Library/Frameworks/JavaVM.framework/Home
ls -laF /System/Library/Frameworks/JavaVM.framework/ | grep Home
lrwxr-xr-x   1 root  wheel    24  5  3 23:13 Home@ -> Versions/CurrentJDK/Home


これでさっきの/System/Library/Frameworks/JavaVM.framework/Versionsの配下に戻って

lrwxr-xr-x   1 root  wheel   63  5  3 23:28 CurrentJDK@ -> /Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents

ですから、/Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents/Home/binにパスが通るわけですね。ややこしいなぁー。

シンボリックリンクでうまいことやる

1.5にチェンジするにはシンボリックリンクを以下の感じで変えればいいかな?

sudo rm -f /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo ln -s 1.5.0-leopard CurrentJDK
source ~/.bash_profile

そして

java -version
java version "1.5.0_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-304)
Java HotSpot(TM) Client VM (build 1.5.0_19-137, mixed mode, sharing)

変わった。


戻してみる

sudo rm -f /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo ln -s /Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents CurrentJDK
source ~/.bash_profile

そして

java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)

戻った。


とりあえずこれで。いろいろ問題点はあるでしょうがなんとなくイメージはついた。けどJavaPreferenceとの関係とかいろいろ分からないことはある。そのうち分かるんじゃないの。記録すること大事。