1. 问题发生环境
- JDK11
- tomcat 8.5
Tomcat 启动时候报如下错误:
2. 原因分析
servlet-api 4.x 版本相较于 3.x 版本对于 Filter 接口做了一次接口升级,这样在你本地上使用 servlet-api 是4.x 版本进行编码的时候,创建一个新的 Filter 实现类的不用再实现 如下两个升级的方法,编译后后的class提交到Tomcat运行,其 servlet-api 的版本反而是未进行接口升级的,因此会导致问题.
3. 解决方案
- 要么继续使用 4.x 版本的serlvet-api , 但要重写两个升级的方法(init, destroy)
- 要么降低本地 servlet-api 的版本为 3.x,这样根据编译器会提示你实现 init 和 destroy.