能否将Tomcat 8(Servlet 3.0)升级至Tomcat 10且保留原Servlet版本?
问题解答
- Tomcat 10 无法直接兼容基于 Servlet 3.0(
javax.servlet包)的旧应用,必须做调整,不能直接用原有版本启动。 - 核心原因是 Tomcat 10 是首个基于 Jakarta EE 的版本,所有 Servlet 相关 API 的包名从
javax.servlet彻底改为jakarta.servlet,旧代码里的import javax.servlet.*语句在 Tomcat 10 环境下会触发ClassNotFoundException。
两种可行方案
方案一:升级 Servlet 版本适配 Tomcat 10
- 将项目依赖从
javax.servlet-api替换为jakarta.servlet-api:5.0(对应 Tomcat 10 的 Servlet 版本) - 全局替换代码中的
javax.servlet为jakarta.servlet,包括所有导入语句、注解引用等 - 重新编译打包后即可部署到 Tomcat 10
方案二:放弃升级到 Tomcat 10,改用 Tomcat 9
如果不想修改代码,可选择升级到 Tomcat 9——它对应 Servlet 4.0,仍基于 javax.servlet 包,完全兼容 Servlet 3.0 的应用,直接部署即可运行,无需代码调整。
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

