必须先配置正确版本的project sdk,再设project language level(如17),否则record等特性报红;接着在modules中同步各模块language level,最后通过java compiler和pom.xml统一target bytecode version,三者不一致将导致编译失败。

必须先确认项目 SDK 是对应版本的 JDK,否则语言级别设成 17 也用不了 record 或 sealed —— IDE 会直接报红,且编译失败。
Project Structure 里改 Project language level
这是最常漏掉的第一步。快捷键 Ctrl+Alt+Shift+S(Windows/Linux)或 Cmd+; (macOS)打开项目结构,左侧选 Project,在 Project language level 下拉菜单里选目标版本(如 17 - Sealed types, pattern matching, records)。注意:这里只影响语法高亮、补全和编辑器检查,不决定最终字节码版本。
- 如果下拉菜单里没有你要的版本,说明
Project SDK没配对(比如 SDK 是 JDK 8,language level 最高只能选 8) - 选完后别忘了点
Apply,部分老版本 IDEA 需要重启才生效 - 这个设置是“默认值”,模块层可以覆盖它
Modules 里同步设置 Language level
即使 Project 级别设好了,模块(Module)仍可能沿用旧设置。切到 Modules 选项卡,逐个选中模块 → Sources 标签页 → 检查 Language level 是否与 Project 一致。尤其多模块项目,某个模块若单独用了 record,就得手动设为 14+(record 是预览特性)或 16+(正式支持)。
- 模块 Language level 可设为
Project default,也可单独指定 - 如果模块依赖了低版本库(如仅兼容 Java 8),强行设高语言级别会导致 IDE 提示“incompatible with target bytecode version”
- 右键模块 →
Open Module Settings是更快捷的入口
Java Compiler 设置 Target bytecode version
IDEA 编译行为由两层控制:编辑器用 Language level 解析语法,编译器用 Target bytecode version 决定生成哪个 JVM 能运行的 .class 文件。路径:File → Settings → Build, Execution, Deployment → Compiler → Java Compiler,设置 Target bytecode version(例如 17)。
- 该值必须 ≥
Language level,否则编译报错java: invalid source release: 17 - 该值不能高于当前
Project SDK支持的最高字节码版本(JDK 17 支持最高到 61,即 Java 17 字节码;JDK 11 不支持设成 61) - Maven/Gradle 项目建议优先在构建配置里统一控制,避免 IDEA 和命令行行为不一致
Maven 项目必须同步 pom.xml 里的 maven.compiler.source 和 maven.compiler.target
IDEA 的设置对 Maven 项目只是“参考”,真正起作用的是 pom.xml 中的插件配置。否则会出现:IDEA 里不报错,但 mvn compile 直接失败。
- 在
<properties></properties>里加:<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties>
- 改完必须右键项目 →
Maven → Reload project,否则 IDEA 不读新配置 - 如果用了
maven-compiler-plugin显式声明,确保<source></source>和<target></target>与 language level 一致,且 ≤ JDK 版本支持的上限
最容易被忽略的是三者不一致:SDK 是 JDK 17,language level 设成 17,但 Target bytecode version 还是 8,或者 pom.xml 里 target 写着 11 —— 这时候 record 语法在编辑器里看着正常,一编译就炸。调的时候建议按“SDK → language level → bytecode version → pom.xml”顺序核对,少一个环节都白搭。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











