1 在 mac终端下 输入 java -version 是哪里在执行java呢? which java 命令可以看到 /usr/bin/java
2 /usr/bin/java 只是一个替身 ,实际指向 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 通过 ls -l java 就能看出来
3 第2点提到的【/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java】其实也不是真正的java,因为Current文件夹是替身,它指向了同目录下的某个版本
4.第3点提到的A文件夹是安装java后系统生成的。它里面的Commands文件夹下有个java可执行文件,这个java其实调用了真真正正的java原身–>【/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/bin/java】(你试试把这个java改个名,再在终端里输入java就明白了哦)
PS:这里的版本号(1.6.0_37-b06-434)不同的机器可能不一样,也可能会存在多个版本,这就看你机器上装了多少个版本的java了
5. 归根到底,【/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/bin/java】才是真正的工作者啊,嘿,绕吧
先启动服务,把终端中的
Using JRE_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
类似这样的路径记录下来,可能你的和我的不一样
删除这些文件,你也可以移动到别的地方备份好
sudo rm -rf /System/Library/Java/JavaVirtualMachines
sudo rm -rf /System/Library/Frameworks/JavaVM.framework
这个文件夹里面的所有东西也是删掉或移动到别的地方
/Library/Java/JavaVirtualMachines
然后执行
pkgutil --pkgs=.*Java.*
看看有多少类似“com.apple.pkg.JavaForMacOSX107“这样的记录
,把这些记录都执行下面的语句删掉:
sudo pkgutil --forget com.apple.pkg.JavaForMacOSX107
删完基本电脑里的JDK都全部清除了
最后去https://developer.apple.com/downloads/index.action,需要applie id登录;
把Java for OS X 2013-003 Developer Package这个下载回来安装,记得是2013-003,不要装最新的2013-004
然后进入到下面的目录:
cd /System/Library/Frameworks/JavaVM.framework/Versions
运行/usr/libexec/java_home -v 1.6
获取java_home路径,一般会是/Library/Java/JavaVirtualMachines/1.6.0_51-b11-457.jdk/Contents/Home这样的格式
把最后的Home去掉
替换下面的java_home路径
sudo ln -s java_home CurrentJDK
最后,ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
看看是否正确链接到jdk目录的Contents上,如果不是,把CurrentJDK删掉重新链接过