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

Spring Boot 3+Jetty启动报错:java.lang.ClassNotFoundException: jakarta.servlet.http.HttpSessionContext

解决Spring Boot 3搭配Jetty启动时jakarta.servlet.http.HttpSessionContext找不到的问题

问题原因

jakarta.servlet.http.HttpSessionContext在Jakarta Servlet 5.0(Spring Boot 3默认使用的版本)中已被移除,Jetty 11+版本基于Jakarta Servlet 5.0开发,本身不会依赖该类。出现此错误的核心原因是项目存在依赖冲突,引入了旧版本的Servlet API(如javax.servlet的旧版依赖、Jakarta Servlet 4.x及以下版本),导致Jetty启动时尝试加载已废弃的类。

解决步骤

1. 排查依赖冲突

运行Gradle命令查看Servlet API相关依赖树,定位冲突来源:

./gradlew dependencyInsight --dependency jakarta.servlet-api

或查看完整依赖树:

./gradlew dependencies

重点检查是否存在javax.servlet:javax.servlet-api或javax.servlet:servlet-api这类旧版依赖。

2. 全局排除旧版Servlet依赖

在Gradle配置中添加全局排除规则,避免旧版依赖被引入:

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    all {
        exclude group: 'javax.servlet', module: 'javax.servlet-api'
        exclude group: 'javax.servlet', module: 'servlet-api'
    }
}

3. 统一Jetty版本(可选)

虽然Spring Boot的依赖管理已默认适配Jetty版本,但可显式指定兼容的Jetty版本(Spring Boot 3.0.x对应Jetty 11.0.14+),确保版本一致性:

dependencyManagement {
    dependencies {
        dependency 'org.eclipse.jetty:jetty-server:11.0.15'
        dependency 'org.eclipse.jetty:jetty-webapp:11.0.15'
        dependency 'org.eclipse.jetty:jetty-servlet:11.0.15'
    }
}

修改后的完整Gradle配置

plugins {
    id 'java'
    id 'idea'
    id 'org.springframework.boot' version '3.0.1'
    id 'io.spring.dependency-management' version '1.1.0'
}

idea {
    module {
        downloadJavadoc = false
        downloadSources = false
    }
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    all {
        exclude group: 'javax.servlet', module: 'javax.servlet-api'
        exclude group: 'javax.servlet', module: 'servlet-api'
    }
}

repositories {
    mavenCentral()
}

dependencyManagement {
    dependencies {
        dependency 'org.eclipse.jetty:jetty-server:11.0.15'
        dependency 'org.eclipse.jetty:jetty-webapp:11.0.15'
        dependency 'org.eclipse.jetty:jetty-servlet:11.0.15'
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'

    implementation 'org.springframework.boot:spring-boot-starter-jetty'
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

验证操作

执行以下命令清理并重新构建项目,然后启动应用:

./gradlew clean build
./gradlew bootRun

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:35:23