由于项目安全升级,需要升级到最新的 tomca10.1.0-M17 ,之前的服务放到新的 tomcat 启动失败,
严重 [main] org.apache.catalina.core.StandardContext.listenerStart 配置应用程序监听器[org.springframework.web.util.WebAppRootListen
er]错误
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
于是我把 javax 的包也放到 tomcat 的 lib 下,然后看了下 tomcat 这个版本需要使用到 Jakarta 6.0 的版本。我也在对应的 build.gradle 将所有的 javax 的依赖换成了最新的 Jakarta 版本。 然后启动又报错
java.lang.ClassCastException: class org.springframework.web.filter.CharacterEncodingFilter cannot be cast to class jakarta.servlet.Filter
我发现 spring 的 WEN-INF 下的 web.xml 配置了 org.springframework.web.filter.CharacterEncodingFilter,这个 CharacterEncodingFilter 类是 spring 的,它依赖的是 javax 的包。
这个问题我看了两天 也不知道怎么解决。我怀疑是 tomcat 启动使用的 Jakarta ,但是 spring 项目 CharacterEncodingFilter 使用的 javax 冲突了。但是不知道怎么处理 麻烦各位老哥了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.