SpringMVC报错java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet求助
解决Spring MVC启动时
javax.servlet.http.HttpServlet类找不到的问题 问题现象
启动Spring MVC项目时出现以下错误:
SEVERE: Servlet [spring] in web application [/SpringMVC] threw load() exception
java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
问题分析
从你提供的pom.xml文件(注:你标注为spring-servlet.xml,实际是Maven项目配置文件)来看,javax.servlet-api依赖的scope被设置为provided:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
provided作用域表示该依赖由运行环境(如Tomcat等Servlet容器)提供,Maven不会将其打包到项目war包中。出现类找不到的问题,通常是因为:
- 本地运行时,IDE未关联正确的Servlet容器,无法加载容器提供的Servlet API类
- 使用的Servlet容器版本不支持Servlet 3.1规范,或容器本身缺失相关类文件
解决方案
- 关联合规的Servlet容器:在IDE中将项目绑定到Tomcat 8.5及以上版本(Spring MVC 5.1.1要求Servlet 3.1+,Tomcat 8.5对应Servlet 3.1),确保运行时能加载容器自带的Servlet API。
- 临时调整依赖作用域(仅本地调试):若只是本地开发调试,可将
scope从provided改为compile,让Maven把Servlet API打包到war中。注意生产环境必须改回provided,否则会和服务器自带的API版本冲突,引发类加载异常。 - 检查容器完整性:确认使用的Tomcat等容器完整,
lib目录下的servlet-api.jar文件未缺失。
内容的提问来源于stack exchange,提问作者Roopa sree mohan
相关产品推荐
相关产品推荐

