おのれの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との関係とかいろいろ分からないことはある。そのうち分かるんじゃないの。記録すること大事。