IDEA默认JDK由Project SDK控制,需在File→Project Structure→Project中设置;新项目默认值则在New Projects Settings中配置;Eclipse通过Installed JREs设默认JDK;VS Code依赖redhat.java插件及.settings.json配置;改IDE JDK后仍报JDK8错误,常因Maven/Gradle编译配置、终端PATH或Run Configuration未同步。

IDEA 里怎么改默认 JDK(Project SDK)
IntelliJ IDEA 启动新项目时用的 JDK,由 Project SDK 控制,不是靠系统环境变量 JAVA_HOME 决定的。改错地方会导致新建项目编译失败、Maven 构建报 java.lang.UnsupportedClassVersionError,或者 Run Configuration 找不到 javac。
- 进 File → Project Structure → Project,在
Project SDK下拉框选已配置好的 JDK(如17.0.1 (corretto-17)) - 如果列表为空,点右侧
New… → JDK,选 JDK 安装目录(例如/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home或C:\Program Files\Amazon Corretto\jdk17.0.1_12) - 务必同步检查下方
Project language level:它要 ≤ JDK 版本支持的最高语言特性(比如 JDK 17 对应选17 - Sealed types, pattern matching for switch) - 这个设置只影响当前项目;若想所有新项目都用某 JDK,需进 File → New Projects Settings → Structure for New Projects,同样设好
Project SDK和Language level
Eclipse 中默认 JRE 是哪来的
Eclipse 不叫 “JDK”,叫 JRE,但实际开发必须配 JDK(否则没有 javac,无法编译)。它的默认值来自两个层级,容易混淆:
-
Workspace 级别:在 Window → Preferences → Java → Installed JREs 里添加 JDK 路径(如
/opt/java/jdk-11.0.20),勾选为默认。这是新建 Java 项目时自动继承的 JRE -
项目级别:右键项目 → Properties → Java Build Path → Libraries → JRE System Library,可单独切换。但若这里显示
Execution environment 'JavaSE-11'却没对应 JRE,就会报红叉 - 常见坑:
Installed JREs里只加了 JRE(比如jre-11.0.20),没加 JDK;或路径指向了jre/子目录而非 JDK 根目录(正确路径是含bin/javac的那一层)
VS Code + Extension Pack for Java 怎么指定 JDK
VS Code 本身不管理 JDK,靠 redhat.java 插件读取配置。它优先级顺序是:项目级配置 > 用户设置 > 系统 JAVA_HOME。最稳妥的方式是显式声明:
- 在项目根目录建
.vscode/settings.json,写入:{ "java.configuration.runtimes": [ { "name": "JavaSE-17", "path": "/usr/lib/jvm/zulu-17" } ] } -
path必须指向 JDK 安装根目录(含bin/,lib/),不能是bin/子目录 - 如果用了 Spring Boot,还要确保
spring-boot-starter-parent的java.version属性和这里一致,否则 Lombok 注解处理器可能失效 - 重启 VS Code 后,底部状态栏会显示当前激活的 JDK 版本;悬停提示里出现
Could not resolve JDK就说明路径不对或权限不足
为什么改了 IDE JDK 还是跑出 JDK 8 错误
IDE 只管编辑和启动,真正执行构建和运行的是底层工具链。即使 IDEA 显示用的是 JDK 17,mvn compile 仍可能调用系统 PATH 里的旧 JDK —— 尤其当你用终端直接运行 Maven 命令时。
立即学习“Java免费学习笔记(深入)”;
- 检查终端中
java -version和mvn -v输出的 Java 版本是否一致 - Maven 的
pom.xml里必须显式声明编译目标:17 17 - Gradle 项目则要在
build.gradle中写:java { sourceCompatibility = JavaVersion.VERSION_17 } - IDE 的 Run Configuration 里也可能单独指定了 JRE;右键运行类 → Run As → Run Configurations… → JRE tab,确认不是选了
Alternate JRE且指向了老版本
最常被忽略的一点:某些 IDE 插件(比如 Lombok、MapStruct)对 JDK 版本敏感,它们的 processor path 和 annotation processing 设置必须和项目 JDK 对齐,否则编译期不报错,运行时报 NoClassDefFoundError。










