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

升级至Java 11后Spring-Security-Web依赖javax.servlet.Filter编译报错

问题原因

Spring Security 5.x系列(包括你使用的5.8.6)底层依赖javax.servlet API,并未迁移到Jakarta EE规范。你已经将项目中所有javax包替换为Jakarta,相当于项目整体环境切换到了Jakarta体系,但spring-security-web 5.8.6仍依赖旧的javax.servlet.Filter,两者API体系不兼容,最终导致类继承层次不一致的编译错误。

另外需要注意:Spring Framework 6.x及以上版本全面采用Jakarta EE规范,而Spring Security 5.x仅能兼容基于javax的Spring Framework 5.x。如果同时混用Spring Framework 6.x和Spring Security 5.8.6,版本不匹配会进一步加剧冲突。

解决方案

结合你必须使用Java 11的限制,有两种可行处理方式:

方案1:降级Spring Framework到5.x系列

Spring Framework 6.x要求Java 17及以上,因此你只能将Spring Framework版本降级到5.x(最后一个兼容Java 11的Spring 5.x版本为5.3.x)。同时将之前替换的Jakarta包改回javax,保持项目API体系统一,spring-security-web 5.8.6的依赖即可正常工作。

方案2:调整Java版本到17+并升级Spring Security到6.x

如果允许将Java版本升级到17(Jakarta EE 9+的最低要求),可直接将Spring Security升级到6.x系列。该版本全面支持Jakarta EE规范,与Spring Framework 6.x完全兼容,能彻底解决javax和Jakarta的依赖冲突问题。

辅助检查步骤

  • 用依赖分析工具确认依赖树:
    • Maven执行:mvn dependency:tree
    • Gradle执行:./gradlew dependencies
      查看是否有其他依赖意外引入javax.servlet或Jakarta.servlet的冲突版本,必要时通过<exclusions>(Maven)或exclude(Gradle)排除冲突依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:52:23