解决MacOS不能正确识别JAVA_HOME问题

Posted gcygeeker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决MacOS不能正确识别JAVA_HOME问题相关的知识,希望对你有一定的参考价值。

目录


背景

最近使用Bazel在MacOS上编译运行Java代码,遇到Bazel一直识别不到本地的JDK导致编译报错的问题,经过这几天的查资料研究,终于发现解决办法。

解决方案

查看Java Home值

终端运行:

$ /usr/libexec/java_home -V

输出:

Matching Java Virtual Machines (1):
    1.8.0_311 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home

无论安装过多少个JDK版本,只要最后一行的输出类似这种:/Library/Java/JavaVirtualMachines/jdkxxxxxxxxx/xxx/xxx
证明设置的java home是正常的,
如果最后一行输出是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin,说明java_home识别到的路径不正常,可以尝试用下面方法解决。

删除识别的错误目录

$ sudo rm -rf /Library/Internet Plug-Ins/JavaAppletPlugin.plugin

重新启动系统

注意一定要重启系统,不然java_home命令返回的值不会更新。
重启完成后终端运行:

$ /usr/libexec/java_home

如果输出的是/Library/Java/JavaVirtualMachines下的目录,说明问题已解决。

补充

通过解决此问题,了解到了Mac下最规范的设置JAVA_HOME环境变量的方式,贴在此处。

设置JAVA_HOME环境变量

$ vim ~/.bash_profile

添加export JAVA_HOME=$(/usr/libexec/java_home)

$ source ~/.bash_profile

(注:.bash_profile视终端类型可能需要改为.zshrc.bashrc 等。)

参考资料

参考资料1
参考资料2

以上是关于解决MacOS不能正确识别JAVA_HOME问题的主要内容,如果未能解决你的问题,请参考以下文章

台式机安装黑苹果MacOS 10.15.3后,系统无法正确的识别主板信息了。该如何恢复?

echo $JAVA_HOME 尽管已在 zshrc 中正确设置,但在 MacOS catalina 中返回空白

Java常见问题总结

Java常见问题总结

Java常见错误整理

macOS Mojave (10.14) 到 Lion (10.7) 上的 JAVA_HOME 在哪里?