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

Java路径定位及Maven切换至Java 15版本问题求助

问题解析与解决方法

一、为什么Maven和终端使用的Java版本不一致?

  • macOS的/usr/bin/java是系统提供的代理程序,并非实际JDK的执行文件,它会根据系统设置自动选择可用的JDK,但优先级逻辑和Maven不同。
  • 未设置JAVA_HOME环境变量时,Maven会自行搜索系统中已安装的JDK,通常优先选择版本较新的(这里就是Homebrew安装的OpenJDK 18),而终端执行java --version时,系统代理指向了AdoptOpenJDK 15,最终导致版本差异。

二、如何让Maven指向Java 15?

1. 找到Java 15的实际安装路径

执行以下命令获取准确路径:

/usr/libexec/java_home -v 15

输出示例:/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home

2. 设置JAVA_HOME环境变量

临时生效(仅当前终端会话)

在终端中执行:

export JAVA_HOME=$(/usr/libexec/java_home -v 15)

执行后运行mvn -v,即可看到Maven已切换到Java 15。

永久生效(所有终端会话)

如果使用macOS默认的zsh终端,编辑~/.zshrc文件:

open -e ~/.zshrc

在文件末尾添加一行:

export JAVA_HOME=$(/usr/libexec/java_home -v 15)

保存后执行以下命令让配置立即生效:

source ~/.zshrc

之后重启终端或新开窗口,mvn -v就会一直使用Java 15。

三、关于/usr/bin/java的困惑解答

  • /usr/bin/java是可执行文件而非目录,所以执行cd /usr/bin/java会报错“不是目录”,这是正常现象。
  • 它是macOS系统的代理程序,作用是根据系统配置(如JAVA_HOME或系统偏好设置中的JDK),调用实际安装的JDK中的java命令。你通过ls -al /usr/bin/java看到的就是它的可执行文件属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:35:22