SpringBoot 3.x集成Togglz遇类转换异常问题求助
解决SpringBoot 3.1.2集成Togglz的ClassCastException问题
问题根源
SpringBoot 3.x基于Jakarta EE 9+规范,使用的是jakarta.servlet.Filter接口;而Togglz 4.0.0及M4版本的默认servlet模块仍依赖旧的javax.servlet API,导致两个版本的Filter接口由不同类加载器加载,触发ClassCastException。
解决方案
排除旧的javax.servlet依赖
在Maven或Gradle中,给Togglz相关依赖排除javax.servlet-api,确保项目使用SpringBoot提供的Jakarta版本:<!-- Maven示例 --> <dependency> <groupId>org.togglz</groupId> <artifactId>togglz-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </exclusion> </exclusions> </dependency>切换到Togglz的Jakarta专属模块
如果排除依赖无效,直接使用Togglz为Jakarta EE提供的servlet-jakarta模块替代原servlet模块:<dependency> <groupId>org.togglz</groupId> <artifactId>togglz-servlet-jakarta</artifactId> <version>4.0.0</version> </dependency>清理依赖缓存
执行项目构建命令清理缓存,确保拉取正确的依赖:# Maven mvn clean install # Gradle gradle clean build验证依赖树
检查项目依赖树,确认不存在javax.servlet-api,仅保留jakarta.servlet-api:# Maven mvn dependency:tree | grep servlet # Gradle gradle dependencies | grep servlet
内容的提问来源于stack exchange,提问作者maruti
相关产品推荐
相关产品推荐

