M1 Mac上java --version总显示最新版本 与JAVA_HOME不符如何解决
问题根因
M1 Mac 系统默认调用 Java 命令时,会优先读取系统注册的最高版本 JDK,仅配置 JAVA_HOME 但未将其对应 bin 目录放到 PATH 最前列时,就会出现版本不匹配的问题。
修复步骤
- 第一步:打开当前 shell 对应的配置文件,M1 Mac 默认使用 zsh,对应配置文件为
~/.zshrc,如果使用 bash 则对应~/.bash_profileopen ~/.zshrc - 第二步:在配置文件末尾新增如下内容,将 JDK11 设为默认,且优先读取对应路径下的 Java 命令
如果你需要快速切换不同 JDK 版本,可以同时新增别名配置,后续输入# 设置默认 JDK 版本为 11 export JAVA_HOME=$(/usr/libexec/java_home -v "11") # 将 JDK 可执行文件路径放到 PATH 最前面,优先级高于系统默认路径 export PATH="$JAVA_HOME/bin:$PATH"jdk8/jdk11/jdk16/jdk17即可一键切换:alias jdk8='export JAVA_HOME=$(/usr/libexec/java_home -v "1.8") && export PATH="$JAVA_HOME/bin:$PATH"' alias jdk11='export JAVA_HOME=$(/usr/libexec/java_home -v "11") && export PATH="$JAVA_HOME/bin:$PATH"' alias jdk16='export JAVA_HOME=$(/usr/libexec/java_home -v "16") && export PATH="$JAVA_HOME/bin:$PATH"' alias jdk17='export JAVA_HOME=$(/usr/libexec/java_home -v "17") && export PATH="$JAVA_HOME/bin:$PATH"' - 第三步:保存配置文件后执行如下命令让配置立即生效
source ~/.zshrc - 第四步:验证是否生效
执行java --version即可看到返回版本为 JDK11,也可执行which java确认路径是否为/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java。
注意:如果之前配置过其他 JDK 路径到 PATH 中,需要删除旧的 JDK 相关 PATH 配置,避免优先级冲突。
内容的提问来源于stack exchange,提问作者c_idle
相关产品推荐
相关产品推荐

