未使用Maven的Spring MVC项目出现DispatcherServlet类找不到异常
解决Web application threw load() exception java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
这个错误的核心原因很明确:你的Web容器(比如Tomcat)在运行时找不到Spring MVC的核心DispatcherServlet类——虽然你在IDE中把jar包添加到了构建路径,但这只满足编译需求,Web应用运行时需要的jar包必须放在WEB-INF/lib目录下,容器才会加载它们。
下面是具体的解决步骤:
1. 确认jar包的部署位置
- 找到你项目的
WEB-INF/lib目录,检查是否包含Spring MVC相关的核心jar包:spring-webmvc.jar(必须有,DispatcherServlet就在这个包里)- 依赖的其他Spring jar包:
spring-web.jar、spring-context.jar、spring-beans.jar、spring-core.jar等
- 如果这些jar包不在
WEB-INF/lib里,手动将它们复制到该目录下。
2. 检查IDE的部署配置(针对Eclipse/IDEA)
Eclipse:
右键你的项目 → Properties → Deployment Assembly,确认所有需要的Spring jar包都被添加到部署列表中(这样IDE在部署项目时会自动把jar包复制到WEB-INF/lib)。如果没有,点击Add → Java Build Path Entries,选择对应的jar包添加进去。
IDEA:
打开File → Project Structure → Artifacts,找到你的Web应用Artifact,展开WEB-INF/lib节点,确认包含所有Spring相关jar包。如果缺少,点击右侧的+按钮,选择Library Files,添加对应的Spring库。
3. 检查版本兼容性
你的Spring配置文件中使用的是3.0版本的schema(spring-beans-3.0.xsd),确保你使用的Spring jar包也是3.x版本,版本不匹配也可能导致类加载问题。
4. 检查配置文件的拼写错误
看你提供的web.xml代码,<servlet-class>标签里的内容有换行拆分,要确保类名完整且正确,修正为:
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
附:你提供的配置文件格式化版本
Spring DispatcherServlet配置文件(spring-servlet.xml)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.controllers"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/springmvc"></property> <property name="username" value="root"></property> <property name="password" value="password"></property> </bean> <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="ds"></property> </bean> <bean id="dao" class="com.dao.EmpDao"> <property name="template" ref="jt"></property> </bean> </beans>
web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
内容的提问来源于stack exchange,提问作者abc
相关产品推荐
相关产品推荐

