我目前的任务是将我们的代码库升级到 Java 11(我知道仍然过时,但这是要求)
我更改了 Jakarta 的所有旧 javax 包,并更新了所有 Spring 和 Spring-Security 包,但我仍然遇到错误
其中一个类正在扩展
org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter
,但该包仍在寻找 javax.servlet.Filter
并导致编译失败并出现 The hierarchy of the type <class name> is inconsistent
错误
我的 spring-security-web 版本为 5.8.6,所以我不确定为什么当 Spring 和 Spring-Security 包的其余部分似乎使用 Jakarta 没有问题时,它仍然试图寻找 javax
回答我自己的问题,希望将来能避免其他人头痛
这个错误的根源是由于对Spring框架的误解
我使用的版本 5.3.29 没有实现 Jakarta,并且仍在使用旧的 JavaX 包
使用 Jakarta 的第一个 Spring Framework 版本是 6.0,它在 JDK 17 之前不兼容,导致更新后的 Tomcat 10 和 Spring Framework 5 之间的任何交互中断
因此我试图在这里实现的功能是不可能的