
macOS/Linux 下用 jEnv 切换 Java 版本最稳
jEnv 是专为多 JDK 管理设计的轻量工具,比手动改 PATH 更可靠,尤其适合频繁切换场景(比如同时跑 Spring Boot 2.x 和 3.x)。它不替换 JDK 安装路径,只在 shell 层动态注入 JAVA_HOME 和调整 PATH 顺序。
常见错误现象:装了 jEnv 却始终 java -version 不变——大概率是没执行 source ~/.jenv/etc/jenv.sh 或没把这行加进 ~/.zshrc(macOS Catalina+ 默认用 zsh)。
- 安装后必须运行
jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home手动注册每个 JDK(路径要真实存在) - 全局切换用
jenv global 17,当前目录临时切换用jenv local 11(会在目录下生成.java-version文件) - 注意 jEnv 不支持 Windows;Windows 用户请直接跳到下一节
- 如果
jenv versions显示版本号带星号(如17.0),说明已注册但未激活;带星号且标system的是系统默认 JDK,不能被 jEnv 管理
Windows 手动切 Java 版本靠改环境变量
Windows 没有类 Unix 的 shell 层级切换机制,jenv 不可用,只能靠修改 JAVA_HOME 和 PATH。关键不是“改完就生效”,而是让所有终端、IDE、命令行工具都读到新值。
常见错误现象:cmd 里 java -version 对了,但 IntelliJ 还在用旧版本——因为 IDE 启动时读取的是启动那一刻的环境变量,不是实时的。
立即学习“Java免费学习笔记(深入)”;
- 必须在「系统属性 → 高级 → 环境变量」里改
JAVA_HOME(值为 JDK 根目录,如C:\Program Files\Java\jdk-17.0.2),不要带\bin -
PATH中需确保%JAVA_HOME%\bin排在其他 Java 路径前面;删掉硬编码的C:\Program Files\Java\jdk-11.0.1\bin这类路径 - 改完要重启所有已打开的终端、IDE、甚至资源管理器(explorer.exe)才能生效
- PowerShell 和 cmd 行为一致,但某些旧脚本可能依赖
java.exe的绝对路径,这类情况建议统一用JAVA_HOME变量拼接
验证切换是否真正生效的三步检查法
光看 java -version 不够,JVM 实际加载的可能是另一个版本,尤其当项目里指定了 --add-modules 或用了 javac --release 时。
常见错误现象:Maven 编译报 Unsupported class file major version 61(对应 JDK 17),但 java -version 显示却是 JDK 11——说明 Maven 没走系统 JAVA_HOME,而是用了内嵌或配置的 JDK。
- 第一步:运行
which java(macOS/Linux)或where java(Windows),确认调用的是$JAVA_HOME/bin/java而非其他路径 - 第二步:运行
java -XshowSettings:properties -version 2>&1 | grep java.home,直接看 JVM 加载的java.home路径 - 第三步:对构建工具单独验证,比如 Maven 用
mvn -v,Gradle 用gradle -v,它们可能有自己的JDK_HOME或JAVA_HOME配置项
IDE 内部 JDK 设置常被忽略
IntelliJ、Eclipse、VS Code 的 Java 插件都有独立的 JDK 配置,和系统 JAVA_HOME 无关。改完系统变量后,IDE 很可能还在用旧 JDK 编译、运行、甚至语法检查。
常见错误现象:终端里 java -version 是 JDK 17,但 IDEA 运行按钮旁边显示 “11”,点进去发现 Project SDK 还是灰色未生效状态。
- IntelliJ:File → Project Structure → Project → Project SDK,选中已安装的 JDK 目录(不是
bin子目录) - Eclipse:Preferences → Java → Installed JREs,Add → Standard VM → Directory 选 JDK 根路径;再进 Project → Properties → Java Build Path → Libraries → Modulepath,确认 JRE System Library 版本匹配
- VS Code + Extension Pack for Java:按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Windows),搜 “Java: Configure Java Runtime”,在 “Java Configuration Runtimes” 下添加并设为默认 - 特别注意:Maven 项目还受
pom.xml里maven-compiler-plugin的source/target控制,那只是字节码级别兼容性设置,不等于运行时 JDK
最容易被忽略的是:IDE 启动时读取的环境变量快照,和你后续在终端里改的 JAVA_HOME 没关系。关掉再重开,别信“刷新”按钮。










