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
相关产品推荐
相关产品推荐

