推荐用/usr/libexec/java_home -V查macOS JDK列表,which java/javac+readlink或ls -l追溯真实路径,echo $JAVA_HOME确认环境变量;临时切换用export JAVA_HOME=...,长期配置写入~/.zshrc,多版本建议用SDKMAN!;IDE需单独设置Project SDK和Maven导入JDK,Maven/Gradle另有配置项。

查看当前 Java 版本和 JDK 安装路径
终端里直接运行 java -version 只显示 JRE 运行时版本,不一定反映你实际在用的 JDK(比如 IDE 可能用的是另一套)。更可靠的方式是查 java 和 javac 的来源:
- 运行
which java和which javac(macOS/Linux)或where java(Windows CMD)确认可执行文件位置 - 接着用
readlink -f $(which java)(Linux)或ls -l $(which java)(macOS)追溯到真实 JDK 根目录 - 检查
$JAVA_HOME环境变量:运行echo $JAVA_HOME,它应指向某个 JDK 的根目录(如/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)
切换 JDK 版本的三种常用方式
不同场景下推荐不同方法,不是所有方式都通用:
-
临时切换(当前终端有效):直接重设
JAVA_HOME并刷新PATH,例如:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.20.jdk/Contents/Home
再验证
export PATH=$JAVA_HOME/bin:$PATHjava -version和javac -version是否一致 -
Shell 配置文件切换(登录即生效):把
export JAVA_HOME=...写进~/.zshrc(macOS Catalina+)或~/.bash_profile,但注意:改完要source ~/.zshrc,且新终端才生效;多个 JDK 时建议写成函数封装,避免每次手动改 -
使用
jdk-switcher或SDKMAN!:SDKMAN! 更成熟,支持一键安装、列表、切换:sdk list java
注意:它会接管
sdk use java 17.0.2-tem
sdk default java 17.0.2-temJAVA_HOME和PATH,和手动配置冲突,别混用
IDE 和构建工具不随终端切换?查这三处
即使终端里 java -version 正确,IntelliJ、Eclipse 或 Maven 仍可能用错 JDK —— 它们通常不读系统 JAVA_HOME:
- IDE 设置:IntelliJ → Preferences → Build, Execution, Deployment → Build Tools → Maven → Importing → JDK for importer;同时 Project SDK 要单独设(File → Project Structure → Project)
-
Maven 编译目标:检查
pom.xml中maven-compiler-plugin的source和target,它只控制字节码级别,不决定编译器本身用哪个 JDK;真正起作用的是MAVEN_OPTS或maven-toolchains-plugin -
Gradle 项目:看
gradle.properties是否有org.gradle.java.home,或命令行传参:./gradlew build --no-daemon -Dorg.gradle.java.home=/path/to/jdk-11
Mac 上 /usr/libexec/java_home 是个关键工具
macOS 自带的 /usr/libexec/java_home 是定位 JDK 的权威方式,比硬编码路径更安全:
立即学习“Java免费学习笔记(深入)”;
- 列出所有已注册 JDK:
/usr/libexec/java_home -V - 获取指定版本路径:
/usr/libexec/java_home -v 17(匹配最接近的 17.x) - 配合切换:可以写成函数放进
~/.zshrc:jdk() {然后用
export JAVA_HOME=$(/usr/libexec/java_home -v "$1");
export PATH=$JAVA_HOME/bin:$PATH;
}jdk 11或jdk 17快速切换
注意:这个命令只识别通过官方 pkg 安装或符合 macOS JDK 目录规范的 JDK,手动解压的 tar.gz 包需先用 sudo ln -s 注册进 /Library/Java/JavaVirtualMachines/ 才能被发现。










