Spring Tool Suite 4中UnsupportedClassVersionError问题求助
运行Spring项目时遇到以下错误:
java.lang.UnsupportedClassVersionError: jakarta/servlet/http/HttpServlet has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0 (unable to load class [jakarta.servlet.http.HttpServlet]) (unable to load class [org.springframework.web.servlet.HttpServletBean]) (unable to load class [org.springframework.web.servlet.FrameworkServlet]) (unable to load class [org.springframework.web.servlet.DispatcherServlet])
已执行以下操作但问题未解决:
- 进入Properties -> Java Build Path -> Libraries,将执行环境修改为Java SE-17
- 进入Windows -> Preferences -> Java -> Compiler,将编译器合规级别设置为17
- 笔记本已安装Java 17版本
作为新手,请问问题出在哪里?
这个错误的核心是:你项目依赖的Jakarta Servlet类(class文件版本65.0)是用Java 21编译的,但当前运行项目的JDK版本是Java 17(最高支持class文件版本61.0)。你已经调整了编译和构建路径的JDK,但运行时用的JDK版本不对。
需要检查以下几个关键点:
1. 检查项目运行配置的JDK版本
- 在Eclipse中,找到你的项目,右键选择「Run As」→「Run Configurations」
- 找到对应的Spring Boot或Web应用运行配置,切换到「JRE」标签页
- 确认选中的JRE是Java 17,而不是更低版本或者系统默认的其他JDK
2. 检查构建工具的JDK配置
如果项目使用Maven:
- 打开项目根目录的
pom.xml,检查是否指定了正确的JDK版本:
<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties>
- 打开「Windows」→「Preferences」→「Maven」→「Installations」,检查Maven关联的JRE是否为17
如果项目使用Gradle:
- 打开
build.gradle,检查JDK版本配置:
java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 }
- 确认Gradle运行时使用的JDK是17
3. 检查系统环境变量
- 打开系统环境变量,确认
JAVA_HOME指向Java 17的安装目录 - 检查
Path变量中,Java 17的bin目录优先级高于其他JDK版本的目录
4. 清理并重新构建项目
- 右键项目→「Clean」,清理旧的编译文件
- 执行构建工具的清理和构建任务:Maven执行「Clean」→「Install」,Gradle执行「clean」→「build」,重新生成符合JDK 17的编译产物
内容的提问来源于stack exchange,提问作者Mini

