Java项目编译报“不支持发行版本X”需同步配置pom.xml、本地环境与IDE三端:先校准JAVA_HOME和mvn -version的JDK版本一致,再在pom.xml中正确配置maven-compiler-plugin(推荐显式声明3.11.0及以上版本并设source/target为纯数字如17),最后在IDEA中关闭自动导入、刷新项目、统一设置Project SDK、Module language level及bytecode version为对应版本,并清理缓存重启。

Java项目编译时出现“不支持发行版本X”或“Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin”报错,本质是Maven编译器插件未正确识别或应用JDK版本,必须同步配置pom.xml、本地环境与IDE三端,缺一不可。
确认当前JDK版本与报错信息匹配
打开终端执行 java -version,记录输出的主版本号(如 17.0.2 → 取 17);再查看报错日志中明确提示的版本(如“不支持发行版本 17”),两者必须一致。若不一致,说明系统JAVA_HOME指向了错误JDK,【必须先修正JAVA_HOME,否则后续所有配置都会失效】。
检查Maven实际使用的JDK:运行 mvn -version,末尾显示的Java版本必须与 java -version 完全相同。若不同,说明Maven绕过了系统JAVA_HOME——此时需在Maven的 bin/mvn(Linux/macOS)或 bin/mvn.cmd(Windows)脚本顶部硬编码指定 JAVA_HOME 路径。
在pom.xml中配置maven-compiler-plugin
方法一:基础属性配置(适用于单模块且无特殊要求的项目)
在 <project></project> 标签下直接添加:
<properties><br> <maven.compiler.source>17</maven.compiler.source><br> <maven.compiler.target>17</maven.compiler.target><br> <maven.compiler.encoding>UTF-8</maven.compiler.encoding><br></properties>
方法二:完整插件配置(推荐,尤其对多模块或需精细控制的项目)
在 <build><plugins></plugins></build> 内插入:
<plugin><br> <groupid>org.apache.maven.plugins</groupid><br> <artifactid>maven-compiler-plugin</artifactid><br> <version>3.11.0</version><br> <configuration><br> <source>17</source><br> <target>17</target><br> <encoding>UTF-8</encoding><br> </configuration><br></plugin>
注意:【version必须显式声明,3.11.0是适配JDK 17+的稳定版,低于3.8.0的旧版本可能不支持JDK 17及以上】;<source></source> 和 <target></target> 值必须为纯数字(如17),不能写成1.17或17.0。
强制IDEA同步Maven配置
第一步:关闭自动导入
进入 Settings → Build, Execution, Deployment → Build Tools → Maven,取消勾选 Import Maven projects automatically。这能防止IDEA在你修改pom.xml后擅自覆盖你的手动设置。
第二步:刷新项目并校验三处JDK
点击右侧Maven工具栏的 Reload project 图标 → 等待刷新完成 → 执行以下检查:
① File → Project Structure → Project:Project SDK 和 Project language level 必须均为17;
② File → Project Structure → Modules:每个模块的Language level 必须设为17;
③ Settings → Build, Execution, Deployment → Compiler → Java Compiler:Project bytecode version 必须选17,且Use compiler 选 javac(非Eclipse compiler)。
第三步:清理缓存并重建
执行 File → Invalidate Caches and Restart → Invalidate and Restart,重启后再次执行 Maven → clean → install。这一步不可跳过,因为IDEA会缓存旧的编译器元数据,仅改pom.xml不触发底层重载。

















