10.5以后的$JAVA_HOME没有被在.bash_profile中设置的话会被默认设置为 /usr/libexec/java_home。
如果一台mac里面安装了多个JDK, 可以通过/usr/libexec/java_home -V 来查看, 结果如下:
1 $ /usr/libexec/java_home -V 2 3 Matching Java Virtual Machines (3): 4 5 1.7.0_13, x86_64:"Java SE 7"/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home 6 7 1.6.0_65-b14-462, x86_64:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 8 9 1.6.0_65-b14-462, i386:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 10 11 12 13 /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home
最后一行实际上反映的是系统默认使用的JAVA_HOME路径, 也就是执行/usr/libexec/java_home得到的路径。
如果想使用JDK1.6怎么办?
请在.bash_profile中添加
1 JAVA_HOME=$(/usr/libexec/java_home -v 1.6) 2 3 export PATH=$PATH:$JAVA_HOME 4 5 export JAVA_HOME
这样在bash下默认使用的就是JDK 1.6了
1 $ java -version 2 3 java version "1.6.0_65" 4 5 Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) 6 7 Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
另外要注意的一个地方是, 有些App是直接使用:
1 $ pwd 2 /System/Library/Frameworks/JavaVM.framework/Versions 3 $ ls -l 4 total 64 5 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4 -> CurrentJDK 6 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4.2 -> CurrentJDK 7 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5 -> CurrentJDK 8 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5.0 -> CurrentJDK 9 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6 -> CurrentJDK 10 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6.0 -> CurrentJDK 11 drwxr-xr-x 8 root wheel 272 Feb 17 22:11 A 12 lrwxr-xr-x 1 root wheel 1 Feb 17 22:11 Current -> A 13 lrwxr-xr-x 1 root wheel 59 Feb 17 22:11 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 14 $
CurrentJDK来定位JDK路径的。一般如果JDK1.6是后安装的就会看到CurrentJDK为1.6。
要改的话:
1 $ ls -l 2 total 64 3 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4 -> CurrentJDK 4 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4.2 -> CurrentJDK 5 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5 -> CurrentJDK 6 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5.0 -> CurrentJDK 7 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6 -> CurrentJDK 8 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6.0 -> CurrentJDK 9 drwxr-xr-x 8 root wheel 272 Feb 17 22:11 A 10 lrwxr-xr-x 1 root wheel 1 Feb 17 22:11 Current -> A 11 lrwxr-xr-x 1 root wheel 59 Feb 17 22:11 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 12 $ sudo rm CurrentJDK 13 Password: 14 $ ln -s /Library/Java/ 15 ln: ./: File exists 16 $ ls -l 17 total 56 18 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4 -> CurrentJDK 19 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4.2 -> CurrentJDK 20 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5 -> CurrentJDK 21 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5.0 -> CurrentJDK 22 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6 -> CurrentJDK 23 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6.0 -> CurrentJDK 24 drwxr-xr-x 8 root wheel 272 Feb 17 22:11 A 25 lrwxr-xr-x 1 root wheel 1 Feb 17 22:11 Current -> A 26 $ ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents CurrentJDK 27 $ ls -l 28 total 64 29 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4 -> CurrentJDK 30 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.4.2 -> CurrentJDK 31 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5 -> CurrentJDK 32 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.5.0 -> CurrentJDK 33 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6 -> CurrentJDK 34 lrwxr-xr-x 1 root wheel 10 Feb 17 22:11 1.6.0 -> CurrentJDK 35 drwxr-xr-x 8 root wheel 272 Feb 17 22:11 A 36 lrwxr-xr-x 1 root wheel 1 Feb 17 22:11 Current -> A 37 lrwxr-xr-x 1 root wheel 58 Feb 18 09:53 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents 38 $