推荐使用Oracle官方JDK-17或JDK-21(LTS),或Eclipse Temurin HotSpot构建;避免JDK-8、系统自带OpenJDK、Windows .exe安装包、macOS Homebrew openjdk及Linux apt default-jdk;正确配置JAVA_HOME指向JDK根目录并设置PATH,确保java/javac版本一致且jmod可用,IDE和构建工具需同步更新JDK路径。

直接装 jdk-17 或 jdk-21 就行,别碰 jdk-8 新项目,也别用系统自带的 openjdk(尤其 macOS)——它常缺 jpackage、jlink 或调试符号,后续打包、热部署、远程调试全可能卡住。
下载哪个 JDK 版本和渠道最稳
Oracle 官方 jdk-17(LTS)或 jdk-21(最新 LTS)是当前生产推荐。Adoptium(Eclipse Temurin)的构建也可靠,但注意选 HotSpot 而非 OpenJ9(后者对 Spring Boot 启动慢、部分 agent 不兼容)。
避坑点:
- Windows 用户别下
.exe自动安装包——它会偷偷改注册表、加环境变量、还可能和旧版冲突;直接下.zip解压更干净 - macOS 用户避开
Homebrew openjdk:它默认装在/opt/homebrew/Cellar/openjdk/...,java -version显示正常,但javac可能找不到,且JAVA_HOME指向不一致 - Linux 用户优先用
.tar.gz包解压到/opt/java/jdk-21这类固定路径,别依赖apt install default-jdk—— Ubuntu 的这个包版本老旧,且javac和java可能来自不同供应商
配置 JAVA_HOME 和 PATH 的实操要点
JAVA_HOME 必须指向 JDK 根目录(不是 bin 子目录),否则 Maven、Gradle、IDEA 都会识别失败。PATH 只需追加 $JAVA_HOME/bin,别重复加 /usr/bin 类路径。
立即学习“Java免费学习笔记(深入)”;
常见错误现象:
-
mvn compile报错Unsupported class file major version 65→ 实际是mvn在用系统老 JDK 编译,JAVA_HOME没生效 -
java -version和javac -version输出版本不一致 →PATH里有多个java或javac,顺序错了
建议操作(以 macOS / Linux 为例,在 ~/.zshrc 中写死):
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH
Windows 用户请用系统“环境变量”图形界面设置,不要在命令行用 set JAVA_HOME=... —— 它只对当前终端有效。
验证是否真可用:三个必须跑通的命令
光看 java -version 不够。这三个命令全通过才算环境就绪:
-
java -version→ 看输出含21.0.1且带Temurin或Oracle字样 -
javac -version→ 必须和上面主版本号一致,且不能报command not found -
java --list-modules | head -3→ 能列出模块说明jmod可用,Spring Boot 3+ 的 native image 构建才不会崩
如果第三条卡住或报错,大概率是装了 JRE 而非 JDK,或解压不完整。
IDE 和构建工具的衔接注意事项
IntelliJ IDEA 默认会读取系统 JAVA_HOME,但新项目创建时仍要手动选 Project SDK —— 别信 “Use embedded JDK”,它只是 IDEA 自带的精简版,编译大项目会 OOM。
Maven 用户注意:~/.m2/settings.xml 里别配 指向老 JDK,否则 mvn clean compile 会静默降级。
Gradle 用户检查 gradle.properties 是否有 org.gradle.java.home,若有,确保它和终端 $JAVA_HOME 一致;不一致时 Gradle 会用自己的 JVM 运行,但编译用的却是另一个 JDK,导致字节码版本错乱。
真正容易被忽略的是:JDK 升级后,旧项目的 .idea/misc.xml 或 .vscode/settings.json 里可能还存着已失效的 JDK 路径,得手动清或重选一次。










