OS X Yosemite系统中Java Updater安装的Java位置查询
解决OS X Yosemite下Java版本显示与实际安装不匹配的问题
我之前在Yosemite上也碰到过类似的Java版本混乱的情况,帮你理一理核心问题和解决办法:
问题根源拆解
你通过~/.bashrc里的/usr/libexec/java_home -v 1.8指定了JDK 1.8.0_74,但Java Updater显示更新到1.8.0_161却找不到对应文件,主要是两个关键点导致的:
- 预装JDK与Oracle更新的区别:Yosemite预装的1.8.0_74是Apple维护的旧版JDK,而Oracle的Java Updater默认更新的是JRE(Java运行环境),不是JDK(开发工具包)。JRE只会安装在
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/,不会出现在你检查的/Library/Java/JavaVirtualMachines/目录下——这就是你找不到1.8.0_161的原因。 - java_home的指向逻辑:
/usr/libexec/java_home优先识别/Library/Java/JavaVirtualMachines/里的JDK,再找系统预装或JRE路径。你在.bashrc里硬指定了旧JDK,所以即使JRE更新了,终端默认还是旧版本。
具体解决步骤
1. 先摸清系统里所有Java环境的位置
运行这条命令,能列出系统能检测到的所有Java路径(包括JDK和JRE):
/usr/libexec/java_home -V
你会看到1.8.0_161对应的路径就是JRE的安装位置。
2. 按需安装对应版本的JDK(如果需要开发用)
如果是开发需要1.8.0_161的JDK,得去Oracle官网下载适配Yosemite的对应版本安装包(注意新JDK可能不支持旧系统,要找兼容Yosemite的版本)。安装后它会自动出现在/Library/Java/JavaVirtualMachines/目录下,java_home就能识别到。
3. 更新.bashrc里的配置
想切换到新环境的话,修改.bashrc:
- 装了1.8.0_161 JDK的情况:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_161)
- 只需要用JRE(非开发场景)的情况:
export JAVA_HOME=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
修改后运行source ~/.bashrc让配置生效,再用java -version验证是否切换成功。
4. 清理旧版本(可选)
如果不再需要1.8.0_74的JDK,直接删除/Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk目录,避免后续版本混淆。
内容的提问来源于stack exchange,提问作者Dmitry Minkovsky
相关产品推荐
相关产品推荐

