当前位置: 首页 > news >正文

【报错解决】java:无效的目标发行版:17;源发行版17需要目标发行版17

问题描述

1、新建空项目时,设置项目SDK为1.8,language level也是8
2、新建模块时,模块JDK也设置成项目JDK即1.8
3、新建后,确认了Project Structure中Project部分的SDK和language level都是对的

问题出现:运行一个测试方法时,提示 java:无效的目标发行版:17源发行版 17 需要目标发行版 17

这时发现Project Structure中Modules部分中那个新建的模块的language level是17,修改后,再使用mvn clean compile,再运行测试方法仍然报错如上

问题解决

1、检查pom.xml文件(没问题)

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target>
</properties>

1、检查IntelliJ IDEA的Maven设置:(没问题)
打开 File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner
找到 JRE 选项,确保选择的是 Project JDK 或明确选择 Java 8

2、检查IntelliJ IDEA的Java Compiler设置(问题所在)
打开 Settings → Build, Execution, Deployment → Compiler → Java Compiler

  • 查看 Project bytecode version 是否设置为 17
  • 查看 Per-module bytecode version 表格中,project01 模块的 Target bytecode version 是否被设置为 17
  • 建议:将这些都改为 8 或留空(使用项目默认)

发现这里的project01 模块的 Target bytecode version 果然仍然是17,而不是笔者所需要的8

在这里插入图片描述

问题出现的原因

为什么会出现该问题?配置优先级导致的覆盖

配置优先级顺序(从高到低):

  • Java Compiler的Per-module设置(最高优先级)← 这里被设置成了17
  • Maven的compiler插件配置
  • POM文件中的 maven.compiler.target
  • Project SDK设置

所以即使POM文件配置正确(Java 8),但Per-module设置(Java 17)优先级更高,就会覆盖它。

Java版本冲突排查顺序

每次创建新模块后:
✓ 检查 Project Structure → Modules → Language level
✓ 检查 Settings → Compiler → Java Compiler → Per-module设置
✓ 执行一次 mvn clean compile 验证

第一优先级:IDE编译器设置(80%的问题在这里)

  1. Java Compiler - Per-module设置(最高优先级)
SettingsBuild, Execution, DeploymentCompilerJava Compiler
  • ✓ 检查 Per-module bytecode version 表格
  • ✓ 确认问题模块的 Target bytecode version
  • ✓ 操作:删除或改为正确版本
  1. Project Structure - Modules
FileProject StructureModules[选择模块]Language level
  • ✓ 检查每个模块的 Language level
  • ✓ 操作:改为与SDK一致的版本
  1. Project Structure - Project
FileProject StructureProject
  • ✓ 检查 Project SDK
  • ✓ 检查 Project language level
  • ✓ 操作:确保两者一致

第二优先级:Maven配置

  1. POM文件 - properties
<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target>
</properties>
  1. POM文件 - compiler插件(如果存在)
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target><release>8</release> <!-- 注意这个!--></configuration></plugin></plugins>
</build>
  1. Maven Runner - JRE设置
SettingsBuild, Execution, DeploymentBuild ToolsMavenRunner
  • ✓ 检查 JRE 是否使用 Project JDK

第三优先级:外部配置(少见但可能)

  1. 项目的.mvn目录
项目根目录/.mvn/
  • ✓ 检查 jvm.config 文件(是否有 --release 17)
  • ✓ 检查 maven.config 文件
  1. Maven全局settings.xml
~/.m2/settings.xml
  • ✓ 检查是否有激活的 profile 设置了Java版本

修改后的标准操作:

  • 修改完配置
  • File → Invalidate Caches / Restart
  • 右键POM → Maven → Reload project
  • mvn clean compile 验证

预防措施:

创建新模块后,必查 Per-module bytecode version
定期检查 Java Compiler 设置,保持为空(使用项目默认)
在POM中明确指定compiler插件配置

http://www.dtcms.com/a/585813.html

相关文章:

  • C/C++输入输出初级(一) (算法竞赛)
  • java list<string> to string[] 怎么转换
  • 【Javaweb学习|黑马笔记|Day4】Web后端基础
  • 做智能网站系统重庆企业
  • Vue 项目实战《尚医通》,首页静态搭建 banner,笔记07
  • 构建AI智能体:八十八、大模型编辑:从一本百科全书到可修订的活页本
  • 2025.11.07 力扣每日一题
  • 网站建设 技术协议wordpress 文本框
  • pcl 构造线、平面、圆、球、圆柱体、长方体、圆锥体点云数据
  • m 的手机网站怎么做小俊哥网站建设
  • 电科金仓KingbaseES数据库全面语法解析与应用实践
  • 化妆品网站建设经济可行性分析好看的设计网站
  • 工程门户网站建设新桥做网站
  • 【开题答辩过程】以《割草机器人工作管理系统的设计与开发》为例,不会开题答辩的可以进来看看
  • 线束之插头导航器显示连接物功能文本
  • JVM(一)----- 类加载过程
  • 猎聘网网站谁做的东莞网页网站制作
  • Spring 6.x HTTP interface 使用说明
  • 庙行镇seo推广网站江西移动网站
  • C++ 图片加背景音乐的处理
  • 进度条+ 基础开发工具----版本控制器git 调试器gdb/cgdb
  • 我在高职教STM32(新11)——LCD1602显示效果控制
  • 将 AI 注入终端:Gemini CLI 保姆级安装与实战指南
  • 珠海市住房城乡建设局网站衡阳网站建设公司哪家好
  • leetcode 345. 反转字符串中的元音字母 python
  • 创建一个网站 站点根文件夹为wordpress互动
  • 网站建设账务处理属于什么费用瑞安这边有没有做网站的
  • S14排序算法--基数排序
  • 人工智能之数学基础:连续型随机变量的期望
  • 江苏省住房和城乡建设厅网站首页东莞微联建站