解决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

猜你喜欢

转载自blog.csdn.net/gongchenyu/article/details/122451156