结论:tomcat服务器版本和Servlet版本不匹配
写了个以maven骨架构建的javaweb项目,部署在tomcat服务器后发现所有静态资源可以正常访问,但是访问任何一个Servlet时出现404,在确认路径无误、所有Servlet类均已被编译后, 怀疑是Servlet类没有被识别为HttpServlet,而是被当作普通的类来编译了,查阅后发现不同版本的服务器(如 Tomcat)支持特定版本的 Servlet/JSP 规范
支持关系如下:
| 服务器版本 | 支持的 Servlet 版本 | 支持的 Java EE 版本 | 最低 Java 版本 |
|---|---|---|---|
| Tomcat 7 | Servlet 3.0 | Java EE 6 | Java 6 |
| Tomcat 8 | Servlet 3.1 | Java EE 7 | Java 7 |
| Tomcat 8.5 | Servlet 3.1 | Java EE 7 | Java 7 |
| Tomcat 9 | Servlet 4.0 | Java EE 8 | Java 8 |
| Tomcat 10 | Jakarta Servlet 5.0(原 Servlet 5.0) | Jakarta EE 9 | Java 8 |
| Tomcat 10.1 | Jakarta Servlet 6.0 | Jakarta EE 10 | Java 11 |
注意:
Tomcat 10 及以上将包名从javax.servlet改为jakarta.servlet,若依赖仍用javax.servlet会导致类找不到错误(NoClassDefFoundError)。

669

被折叠的 条评论
为什么被折叠?



