OS10.6インストール直後のデフォルトjavaについて
自分Macのjdkの構成とかパスとかbash_rcとか$JAVA_HOMEとかbash_profileとか統一感無く、たいした知識も持ち合わせずにいじっているうちに、OSインストールした直後デフォルトのjavaの構成とかはどうなっていたのかまったく分からなくなってしまったので、別パーティションを確保した上でクリーンインストールしてみていろいろ調査します。私が今使っているのは2010年の10月に発売されたMacBookAirでOSのバージョンは10.6.4でした。
Javaバージョン
java -version
java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248) Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)
あそう。
Javaコマンドどこよ?
type java
java is hashed (/usr/bin/java)
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/
drwxr-xr-x 13 root wheel 442 5 3 12:18 ./ drwxr-xr-x 11 root wheel 374 5 3 12:18 ../ lrwxr-xr-x 1 root wheel 5 5 3 12:17 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 12:17 1.4@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 5 3 12:17 1.4.2@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 5 3 12:17 1.5@ -> CurrentJDK lrwxr-xr-x 1 root wheel 10 5 3 12:17 1.5.0@ -> CurrentJDK lrwxr-xr-x 1 root wheel 5 5 3 12:17 1.6@ -> 1.6.0 drwxr-xr-x 7 root wheel 238 5 3 12:17 1.6.0/ drwxr-xr-x 8 root wheel 272 5 3 12:18 A/ lrwxr-xr-x 1 root wheel 1 5 3 12:18 Current@ -> A lrwxr-xr-x 1 root wheel 3 5 3 12:17 CurrentJDK@ -> 1.6
CurrentだからAディレクトリへのリンクでAの中身は
↓こんなのだよ
ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/A
drwxr-xr-x 8 root wheel 272 5 3 12:18 ./ drwxr-xr-x 13 root wheel 442 5 3 12:18 ../ lrwxr-xr-x 1 root wheel 28 5 3 12:18 CodeResources@ -> _CodeSignature/CodeResources drwxr-xr-x 42 root wheel 1428 12 3 2009 Commands/ drwxr-xr-x 4 root wheel 136 12 3 2009 Frameworks/ -rwxr-xr-x 1 root wheel 201232 12 3 2009 JavaVM* drwxr-xr-x 32 root wheel 1088 5 3 12:18 Resources/ drwxr-xr-x 3 root wheel 102 12 3 2009 _CodeSignature/
それにしてもAってなんだよ。Aって。
ここのCommandsの中のjavaを実際には使用するってなってるねー。
ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands | grep java
-rwxr-xr-x 1 root wheel 72896 12 3 2009 java* -rwxr-xr-x 1 root wheel 85616 12 3 2009 java_home* -rwxr-xr-x 1 root wheel 72896 12 3 2009 javac* -rwxr-xr-x 1 root wheel 72912 12 3 2009 javadoc* -rwxr-xr-x 1 root wheel 72896 12 3 2009 javah* -rwxr-xr-x 1 root wheel 72896 12 3 2009 javap* -rwxr-xr-x 1 root wheel 55952 12 3 2009 javaws*
このjavaですね。なんでこんなことになってるの?
Java Preferenceでデフォルトをかえることによってこの辺はどう変化するのだろうか?
Aディレクトリと1.6.0ディレクトリ
あと
/System/Library/Frameworks/JavaVM.framework/Versions/
にある1.4とか1.5とかのシンボリックリンクは回りくどく結局1.6.0ディレクトリを参照していますよね。
その中身は
ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands | grep java
lrwxr-xr-x 1 root wheel 16 5 3 12:17 java@ -> ../Home/bin/java lrwxr-xr-x 1 root wheel 17 5 3 12:17 javac@ -> ../Home/bin/javac lrwxr-xr-x 1 root wheel 19 5 3 12:17 javadoc@ -> ../Home/bin/javadoc lrwxr-xr-x 1 root wheel 17 5 3 12:17 javah@ -> ../Home/bin/javah lrwxr-xr-x 1 root wheel 17 5 3 12:17 javap@ -> ../Home/bin/javap lrwxr-xr-x 1 root wheel 92 5 3 12:17 javaws@ >/System/Library/Frameworks/JavaVM.framework/Resources/Deploy.bundle/Contents/Home/bin/javaws
1階層戻って/Home/binだってさ。
ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin | grep java
-rwxr-xr-x 1 root wheel 100672 4 15 2010 java* -rwxr-xr-x 1 root wheel 104784 4 15 2010 javac* -rwxr-xr-x 1 root wheel 104784 4 15 2010 javadoc* -rwxr-xr-x 1 root wheel 104784 4 15 2010 javah* -rwxr-xr-x 1 root wheel 104784 4 15 2010 javap* lrwxr-xr-x 1 root wheel 92 5 3 12:17 javaws@ -> /System/Library/Frameworks/JavaVM.framework/Resources/Deploy.bundle/Contents/Home/bin/javaws
この1.6.0ディレクトリとAディレクトリには同じJavaが入ってるっぽいよね。なんで2つJavaコマンドが存在するのでしょう?
Aってなんなんでしょう?
OS10.6でのjdk1.4や1.5の扱いは?
基本的に10.6ではもうデフォルトでjdk1.5とか1.4は入ってないみたいです。それにAppleが提供しているインストーラも10.6対応とかしてないようです。10.5用のjdk1.5とかはインストールできなかった。だからここら辺をみて1.5や1.4を使えるようにした場合、この無駄なシンボリックリンクとかを使ってうまいことできるのかな的感はあるのだが、どうするのがベストなのでしょうかよくわかりません。どう管理するか。私には難しいです。JAVA_HOMEとかどう設定するのがいいの?
自分の現在の状況もメモっとかないといけないね。なるべく分かりやすい構成にしてさ。1.5とかも入れてみたりしてさ。