Spring 3.0迁移时出现javax.servlet.Filter无法访问问题求助
Spring 3.0迁移中AWS X-Ray与Jakarta Servlet冲突的解决方案
核心问题原因
Spring 3.0基于Jakarta EE 9+规范,所有Servlet相关API包路径从javax.servlet迁移至jakarta.servlet,但你当前使用的AWS X-Ray Servlet Filter仍依赖旧的javax.servlet.Filter,导致编译时找不到该类。
具体解决方案
升级AWS X-Ray依赖至Jakarta适配版本
替换原有的AWS X-Ray Servlet依赖,使用支持Jakarta EE的版本:- Maven:将
com.amazonaws:aws-xray-servlets替换为com.amazonaws:aws-xray-servlets-jakarta(建议选2.10.0及以上版本) - Gradle:对应修改依赖为
implementation 'com.amazonaws:aws-xray-servlets-jakarta:2.12.0'(可根据实际需求选择最新兼容版本)
- Maven:将
替换Filter类引用
将代码中所有com.amazon.xray.javax.servlet.AWSXRayServletFilter的导入,替换为com.amazon.xray.jakarta.servlet.AWSXRayServletFilter,确保注册的Filter是适配Jakarta版本的实现。清理依赖冲突
用依赖分析工具排查项目依赖:- Maven执行
mvn dependency:tree,Gradle执行./gradlew dependencies
找到所有引入javax.servlet-api的依赖,通过<exclusions>(Maven)或exclude(Gradle)规则排除该依赖,确保项目中仅存在jakarta.servlet-api(Spring 3.0默认已引入对应版本)。
- Maven执行
检查配置类代码
确认AwsXrayConfig中所有Filter相关代码均使用jakarta.servlet包下的类:- 替换
javax.servlet.Filter为jakarta.servlet.Filter - 确保注入到
FilterRegistrationBean的Filter是Jakarta版本的实现(Spring Boot 3中FilterRegistrationBean已适配Jakarta,无需更换包路径)
- 替换
内容的提问来源于stack exchange,提问作者snnhbyb
相关产品推荐
相关产品推荐

