Spring Boot3迁移遇TypeNotPresentException:javax.servlet.HttpServletRequest缺失
Spring 6迁移中
javax.servlet.http.HttpServletRequest缺失异常解答 问题根源
你遇到的异常并非来自最新Spring Core,而是旧版本的spring-plugin-core-2.0.0.RELEASE导致的。这个版本的spring-plugin-core基于javax.servlet API开发,完全没适配Spring 6/Spring Boot 3要求的Jakarta EE命名空间变更。而Spring 6已经彻底把所有javax相关API替换成jakarta开头的包,所以当旧版spring-plugin-core尝试加载javax.servlet.http.HttpServletRequest时,JVM找不到这个类,就抛出了TypeNotPresentException。
为什么和Spring Core无关
最新的Spring Core 6.x已经完全移除了对javax命名空间的依赖,所有Servlet相关的API都迁移到了jakarta.servlet包下。异常栈里的来源是spring-plugin-core,不是Spring Core本身,别搞混了。
解决办法
- 升级spring-plugin-core版本:直接把依赖换成适配Jakarta的3.x版本,比如
spring-plugin-core:3.0.0,这个版本已经完成了命名空间迁移,能和Spring 6兼容。 - 排查依赖树:用Maven的
mvn dependency:tree或者Gradle的gradle dependencies命令,找出所有间接引入旧版spring-plugin-core的依赖,确保没有遗漏的javax系旧依赖。 - 排除传递依赖:如果有其他依赖间接带进来旧版spring-plugin-core,就在你的依赖声明里加上排除规则,比如Maven中这么写:
<dependency> <!-- 替换成你的具体依赖 --> <groupId>com.example</groupId> <artifactId>your-dependency</artifactId> <version>x.x.x</version> <exclusions> <exclusion> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> </exclusion> </exclusions> </dependency>
内容的提问来源于stack exchange,提问作者Naseer Mohammad
相关产品推荐
相关产品推荐

