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

Spring Boot 3出现javax.servlet.http.HttpServletRequest类找不到异常求助

解决Spring Boot 3.0升级后java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest异常

问题根源

Spring Boot 3.x基于Jakarta EE 9+,所有原javax.*命名空间的API已迁移至jakarta.*,你的项目中仍存在依赖旧版javax.servlet的组件(如spring-security-social-facebook),同时代码中未完成javax.servlet到jakarta.servlet的包路径替换,最终导致类加载冲突。

具体修复步骤

1. 替换过时的社交登录依赖

移除pom.xml中基于javax的Spring Security Social相关依赖:

<!-- 移除以下旧依赖 -->
<dependency>
    <groupId>org.springframework.security.social</groupId>
    <artifactId>spring-security-social</artifactId>
    <version>1.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.security.social</groupId>
    <artifactId>spring-security-social-facebook</artifactId>
    <version>1.1.6.RELEASE</version>
</dependency>

添加Spring Boot官方推荐的OAuth2 Client依赖(适配Jakarta):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

2. 重构Security配置类

替换原SocialConfig及相关配置,使用OAuth2 Client方式配置Facebook登录:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/", "/login**").permitAll()
                .anyRequest().authenticated()
            )
            .oauth2Login(oauth2 -> oauth2
                .loginPage("/login")
            );
        return http.build();
    }
}

3. 修正代码中的包引用

将所有代码中import javax.servlet.http.HttpServletRequest;替换为:

import jakarta.servlet.http.HttpServletRequest;

4. 清理冲突依赖

执行Maven命令排查残留的javax.servlet依赖:

mvn dependency:tree | grep javax.servlet

找到引入javax.servlet的依赖后,在pom.xml中添加排除规则,示例:

<dependency>
    <!-- 存在问题的依赖 -->
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

验证修复

重新构建项目并启动,点击“Login using Facebook”即可正常跳转授权,不会再出现类找不到的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:45:23