You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle项目升级Spring Boot 3.0.1后遇NoClassDefFoundError: jakarta/servlet/http/HttpSessionContext

Spring Boot 3.0.1升级后Jetty出现NoClassDefFoundError问题解决

在Gradle项目中将Spring Boot从2.7.6升级至3.0.1后,触发以下错误:

Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpSessionContext
    at org.eclipse.jetty.servlet.ServletContextHandler.newSessionHandler(ServletContextHandler.java:339)
    at org.eclipse.jetty.servlet.ServletContextHandler.getSessionHandler(ServletContextHandler.java:432)
    at org.eclipse.jetty.servlet.ServletContextHandler.relinkHandlers(ServletContextHandler.java:257)
    at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:180)
    at org.eclipse.jetty.webapp.WebAppContext.<init>(WebAppContext.java:301)
    at org.eclipse.jetty.webapp.WebAppContext.<init>(WebAppContext.java:228)
    at org.springframework.boot.web.embedded.jetty.JettyEmbeddedWebAppContext.<init>(JettyEmbeddedWebAppContext.java:28)
    at org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory.getWebServer(JettyServletWebServerFactory.java:158)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:183)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:161)
    ... 9 common frames omitted
Caused by: java.lang.ClassNotFoundException: jakarta.servlet.http.HttpSessionContext
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 19 common frames omitted

问题原因

Spring Boot 3.0默认适配Servlet API 6.0,但当前使用的Jetty版本不支持该API版本,导致找不到jakarta.servlet.http.HttpSessionContext类。

解决方法

在Gradle配置中强制将Servlet API版本降级至5.0.0:

  • Groovy DSL(build.gradle):
ext['jakarta.servlet.version'] = '5.0.0'
  • Kotlin DSL(build.gradle.kts):
extra["jakarta.servlet.version"] = "5.0.0"

内容的提问来源于stack exchange,提问作者Erii Asari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:15:39