You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Java 11升级到17后Maven无法运行,提示JAVA_HOME配置错误

解决Mac Sonoma下Java 17与Maven的JAVA_HOME识别问题

问题重现

  • 已卸载所有旧JDK,安装Java 17后运行正常:
$ java -version
java version "17.0.11" 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.11+7-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.11+7-LTS-207, mixed mode, sharing)
  • echo $JAVA_HOME显示路径正确:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
  • 执行任何Maven命令均报错:
$ mvn -version
The JAVA_HOME environment variable is not defined correctly,
this environment variable is needed to run this program.
  • 已按教程修改~/.bash_profile,但问题未解决。

排查与解决步骤

1. 确认当前Shell环境

Mac Sonoma默认使用zsh,而非bash,~/.bash_profile仅在bash启动时加载。执行以下命令查看当前Shell:

echo $SHELL

如果输出是/bin/zsh,则需要将环境变量配置到~/.zshrc文件中:

# 复制bash_profile的配置到zshrc
cat ~/.bash_profile >> ~/.zshrc
# 使配置生效
source ~/.zshrc

之后重新打开终端,执行mvn -version验证。

2. 验证JAVA_HOME的绝对路径有效性

直接执行以下命令,确认路径是否存在且正确:

ls -la $JAVA_HOME/bin/java

如果输出文件不存在,说明JAVA_HOME路径有误,重新检查JDK安装目录。

3. 手动指定JAVA_HOME运行Maven

部分Maven启动脚本对环境变量加载逻辑敏感,可直接指定JAVA_HOME执行Maven:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home mvn -version

如果此命令正常运行,说明环境变量的加载存在问题,回到步骤1确保配置文件正确加载。

4. 重置终端环境变量缓存

有时终端会缓存旧的环境变量,可通过以下方式重置:

  • 完全关闭终端后重新打开
  • 或者执行对应Shell的配置加载命令:
source ~/.zshrc  # zsh环境
# 或
source ~/.bash_profile  # bash环境

5. 兜底检查Maven版本兼容性

Maven 3.8.0及以上版本支持Java 17,你的3.9.7版本符合要求,若以上步骤无效,可重新下载解压Maven包,确保文件无损坏。

内容的提问来源于stack exchange,提问作者noel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:42:38