Spring Tomcat未加载调度程序Servlet(ClassNotFoundException)

Spring Tomcat未加载调度程序Servlet(ClassNotFoundException),spring,tomcat,spring-mvc,Spring,Tomcat,Spring Mvc,我试着根据上述问题的答案进行搜索和更改,但不起作用。我没有使用任何构建工具 所有jar文件jstl1.2、common loggings 1.1.3和Spring 3.2.3 jar都位于WebContent/WEB-INF/lib中 jsp是一个受欢迎的文件,它在Eclipse浏览器中正确显示,但当我单击控制器的超链接时,404请求的资源不可用。从日志来看,tomcat似乎没有加载DispatcherServlet 我尝试重新启动/清理并发布tomcat 使用Tomcat7、jre7、Ecli

我试着根据上述问题的答案进行搜索和更改,但不起作用。我没有使用任何构建工具

所有jar文件jstl1.2、common loggings 1.1.3和Spring 3.2.3 jar都位于WebContent/WEB-INF/lib中

jsp是一个受欢迎的文件,它在Eclipse浏览器中正确显示,但当我单击控制器的超链接时,404请求的资源不可用。从日志来看,tomcat似乎没有加载DispatcherServlet

我尝试重新启动/清理并发布tomcat

使用Tomcat7、jre7、EclipseKepller 4.0和JavaEE2.0

谢谢你的帮助

Tomcat日志:

   ul 02, 2013 1:16:52 PM org.apache.catalina.core.ApplicationContext log
    I**NFO: No Spring WebApplicationInitializer types detected on classpath
    Jul 02, 2013 1:16:52 PM org.apache.catalina.core.ApplicationContext log
    INFO: Marking servlet spring as unavailable
    Jul 02, 2013 1:16:52 PM org.apache.catalina.core.StandardContext loadOnStartup
    SEVERE: Servlet /SpringMVC threw load() exception
    java.lang.ClassNotFoundException:             org.springframework.web.servlet.DispatcherServlet**
            
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Jul 02, 2013 1:16:53 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 02, 2013 1:16:53 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 02, 2013 1:16:53 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 11462 ms
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVC</display-name>

     <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
 
    <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>*.html</url-pattern>
    </servlet-mapping>
</web-app>

根据堆栈跟踪,您缺少包含DispatcherServlet类的spring-webmvc.jar。尝试再次检查类路径(WEB-INF/lib),以确保jar在那里。通常,在Spring MVC应用程序上,您需要以下JAR:


我还建议您使用依赖关系管理工具(例如:Maven/ivy),否则自己管理jar太难了

只需将所有需要的jar文件添加到WEB-INF/lib文件夹中,就可以了。
在本例中,只有找到的DispatcherServlet类

尝试使用ctrl+shift+T(在eclipse中)在构建路径中搜索
DispatcherServlet
,并查看结果JAR是否包含在项目中lib@LaabidiRaissi:您好,正如您提到的,它没有显示在项目库中,我确实附加了源代码,但没有工作。如何确保所有jar都在projectlib中,我将所有jar复制到了WebInf/lib文件夹中。这还不够,还是我们需要做点别的?谢谢你指出我们需要源文件吗?我认为只有.class文件就足够了?右键单击jar-->构建路径-->添加到构建路径(当然是在eclipse中)当然我们只需要二进制jar,但是由于在类路径上找不到该类,因此它没有正确地添加到itI中(WEB-INF/lib)中有上述jar。但它不起作用。我已经添加了eclipse项目浏览器视图。如果您发现有任何问题,请告诉我,它不允许添加图像,但我确信jar存在于您所说的目录中,该目录缺少commons-logging-1.1.1.jar。我已经浪费了将近3个小时…………终于成功了。谢谢
<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
                        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.maverick.springmvc.controller" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>
package com.maverick.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class HelloWorldController {


    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        System.out.println("test");
        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message);
    }
}