Project SDK不可见是因项目非标准Java模块,需检查pom.xml或build.gradle,无则新建Java模块并标记src/main/java为Sources;版本错配需同步Project、Modules和Compiler三处JDK设置;全局SDK删除前须先切换项目SDK;Maven的JDK配置需通过自动导入和重载生效。

项目结构里看不到Project SDK选项
常见现象是打开 File > Project Structure 后,左侧选中 Project,右侧却没显示 Project SDK 下拉框,或者显示 None 且无法编辑。
根本原因是当前项目不是标准的 Java 模块(Module)——比如用 Empty Project 创建、或导入了非 Maven/Gradle 的纯文件夹。IDEA 不会自动识别为 Java 项目,也就不会加载 JDK 配置入口。
- 先确认项目根目录下有没有
pom.xml或build.gradle;没有的话,右键项目根目录 →New > Module…→ 选Java类型新建一个模块 - 已有模块但未标记为 Sources:在
Project Structure > Modules中选中模块 → 右侧点Sources标签页 → 把主代码目录(如src/main/java)标为Sources - 标记后,回到
Project页面,Project SDK就会可编辑了
切换JDK后编译报错“java: 错误: 不支持的class文件版本”
这是最典型的版本错配:项目用了 JDK 17 编译,但运行时或 IDE 内置编译器仍用 JDK 8,或反过来。错误信息里的数字(如 61 对应 JDK 17)能直接反推目标版本。
关键不是只改 Project SDK,而是同步对齐三处:
立即学习“Java免费学习笔记(深入)”;
-
Project Structure > Project:设Project SDK和Project language level(比如都选17) -
Project Structure > Modules:每个模块的Language level必须和 Project 一致(不能有的模块用 8,有的用 17) -
Settings > Build > Compiler > Java Compiler:检查Target bytecode version是否匹配,它必须 ≤Project language level
漏掉任意一项,都可能触发 class 版本不兼容。尤其多人协作时,有人改了 language level 但没提交 .idea/misc.xml,别人拉代码就容易踩坑。
全局SDK配置与项目级SDK冲突
IDEA 有两个层级的 JDK 管理:一个是全局的 File > Settings > Build > SDKs(所有项目可见),另一个是项目内绑定的 Project SDK。两者不自动同步。
常见陷阱是删了全局 SDK,但项目仍引用着旧路径——此时项目页面显示 SDK 名称,但实际路径已失效,编译时才会报 Cannot find JDK 'xxx'。
- 删 SDK 前,先去
Project Structure > Project改成别的可用 SDK,再删 - 新增 JDK 后,它不会自动成为项目默认 SDK;必须手动在项目设置里下拉选择
- 如果团队共用同一套 JDK 路径(比如统一装在
C:\dev\jdk-17),建议用相对路径或环境变量($JDK_HOME)避免硬编码路径
Maven项目里pom.xml指定JDK版本无效
<maven.compiler.source> 和 <maven.compiler.target> 只控制 Maven 构建行为,不影响 IDEA 的内部编译器或运行配置。你改了 pom 却发现 IDEA 还在用旧 JDK,就是这个原因。
正确做法是让 IDEA 自动读取 Maven 配置:
- 确保
Settings > Build > Build Tools > Maven > Importing中勾选了Import Maven projects automatically - 右键项目 →
Maven > Reload project(或点右上角刷新图标) - 重载后,IDEA 会把
pom.xml里的 JDK 版本映射到Project language level和Target bytecode version
但如果项目同时有多个模块,且各模块 pom.xml 的 JDK 版本不一致,IDEA 会取第一个模块的值,其余模块需手动校准——这点特别容易被忽略。







