【问题标题】:Spring MVC suddenly class Not found DispatcherServletSpring MVC 突然类 Not found DispatcherServlet
【发布时间】:2014-03-09 11:24:08
【问题描述】:

我的 WebApp 工作正常,一切都很好,直到我尝试实现一些文件上传。 但它没有用,所以我只是将所有东西都恢复到以前的状态。但从那以后它就不起作用了。我的堆栈跟踪:

Feb 11, 2014 4:11:35 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\java\jdk1.7.0_25\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;c:\Program Files\Intel\DMIX;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;C:\java\SlikSvn\bin;C:\java\apache-maven-3.0.5\bin;C:\java\apache-ant-1.8.4\bin;C:\java\SlikSvn\bin;C:\java\jdk1.7.0_25\bin;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;c:\Program Files\Intel\DMIX;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;C:\java\SlikSvn\bin;C:\Python27\Scripts;C:\Program Files (x86)\Google\google_appengine\;.
Feb 11, 2014 4:11:35 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:springproject' did not find a matching property.
Feb 11, 2014 4:11:36 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Feb 11, 2014 4:11:36 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 521 ms
Feb 11, 2014 4:11:36 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Feb 11, 2014 4:11:36 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.35
Feb 11, 2014 4:11:36 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet ds as unavailable
Feb 11, 2014 4:11:36 PM org.apache.catalina.core.ApplicationContext log
SEVERE: Error loading WebappClassLoader
  context: /springproject
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@139231a9
 org.springframework.web.servlet.DispatcherServlet
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Feb 11, 2014 4:11:36 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /springproject threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Feb 11, 2014 4:11:36 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Feb 11, 2014 4:11:36 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Feb 11, 2014 4:11:36 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/13  config=null
Feb 11, 2014 4:11:36 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 672 ms
Feb 11, 2014 4:11:42 PM org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet ds is currently unavailable
Feb 11, 2014 4:11:43 PM org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet ds is currently unavailable
Feb 11, 2014 4:11:44 PM org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet ds is currently unavailable

我的 Pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springproject</groupId>
<artifactId>springproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>


<dependencies>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.0.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.0.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>

    <!-- Spring JDBC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.0.0.RELEASE</version>
    </dependency>
    <!-- H2 Driver -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.2.140</version>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20070829</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>

</dependencies>

我的 Web.xml:

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 版本="2.4">

<display-name>springproject</display-name>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/Application-context.xml</param-value>
</context-param>


<!-- Handles all requests into the application -->
<servlet>
    <servlet-name>ds</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/servlets/servlet-context.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>ds</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

我尝试通过 maven 清理、重新发布、更新槽、从备份中删除和恢复,但仍然无法正常工作,请帮忙。

【问题讨论】:

  • 你的 POM 与以前的版本有区别吗?
  • 不,我比较了它们,一切都一样。

标签: java spring maven spring-mvc model-view-controller


【解决方案1】:

您是否将 Eclipse Web 工具平台与 Eclipse 管理的 Tomcat 一起使用?如果是这样,请尝试通过在“服务器”视图中右键单击服务器实例的节点并选择“清理...”和“清理 Tomcat 工作目录”来清理 Tomcat。如果您在该视图中展开服务器节点,您将看到已部署的应用程序。右键单击应用程序节点并选择“清理模块工作目录...”

【讨论】:

    【解决方案2】:

    另外,执行 Maven 更新(右键单击->Maven->更新项目...)。我发现有时我的项目会以某种方式丢失其依赖项,并且我会遇到与您相同的异常。

    【讨论】:

    • 就像我写的一样,我试图通过 maven 更新槽并清理我的 tomcat
    【解决方案3】:

    如果您使用的是 Eclipse,请右键单击项目,转到“属性”,然后在“部署程序集”上单击 Add.. -&gt; Java Build Path -&gt; Maven Dependencies。单击确定,清理您的项目,然后重试。看看这是否有效。

    【讨论】:

    • 谢谢你,你节省了我很多时间 :)
    • 这也是我的问题。所以 Eclipse 不知道在哪里可以找到 Maven 依赖项,或者它实际上知道但忘记了?
    【解决方案4】:

    您是否检查过配置文件的名称和路径是否正确? Application-context.xmlservlet-context.xml

    您说您尝试实现文件上传功能。它似乎打破了什么。您应该尝试恢复到实施之前的版本,然后检查您的 webapp 是否可以正常工作。

    【讨论】:

    • link 这是它的外观截图,一切都很好。
    • 尝试将您的 servlet 配置重命名为 ds-servlet.xml 并将其复制到放置 web.xml 的同一文件夹中。此外,您应该删除 &lt;init-param&gt; 节点(及其内容)。
    • 您是否尝试将项目恢复到错误发生之前的状态?只是配置是否依赖文件上传。
    • 我恢复了以前的版本,我的 Eclipse 在发布时挂断了
    【解决方案5】:

    好的,伙计们,我可以解决这个奇怪的错误,问题是我创建了一个新的 tomcat 服务器,然后添加了项目。现在一切正常,感谢您的帮助。

    【讨论】:

      【解决方案6】:

      我遇到过DispatcherServlet.class not found exception,请按照以下步骤操作:

      1. 您遇到此错误是因为您的 tomcat 版本太旧(低于 6.0)和/或 jar 文件未放在 WEB-INF/lib 中。因此,构建一个新的(完全空白的)动态 Web 项目。创建项目文件(我说的只是你创建的文件......即控制器、jsps、htmls、XMLs)
      2. 删除低于 6.0 版的 tomcat 服务器(我的是 5.5,我遇到了同样的错误,然后下载了 6.0)并删除,转到“控制台”选项卡旁边的服务器选项卡。删除那里的服务器,然后右键单击您的项目,转到配置-> 构建路径-> 库选项卡。也从那里“删除”服务器。然后构建清理并刷新项目。
      3. 现在去你的浏览器,下载apache tomcat 6.0版本。将此下载的文件夹粘贴到您想要的任何驱动器和任何文件夹中。
      4. 现在回到您的 IDE,复制 jar 文件并将它们粘贴到 WEB-INF/lib 文件夹中(根本不要配置 BUILD-PATH,因为像 dipatcher servelet 这样的类将从 WEB-INF/lib 文件夹中动态调用默认情况下..所以去你的驱动器,复制所有jar。然后回到你的IDE..去你的项目,将它们粘贴到WEB-INF/lib中。然后bulid-clean并刷新项目。 5.右键单击您的项目,在服务器上运行为运行。在弹出窗口中,您将看到服务器选择的下拉菜单,在此处更改为“无”(这非常重要)。单击下一步,然后它会要求您浏览到服务器文件夹。所以浏览到您下载的文件夹,选择它按完成。宾果游戏。它完成了。

      【讨论】:

        【解决方案7】:

        在服务器选项卡下-> 单击清理/清理 Tomcat 工作目录。同样在展开服务器下,右键单击服务器上已部署的应用程序,然后单击“清理模块工作目录”并重新启动服务器。这解决了我的“找不到 Dispatcher Servlet 类”的问题。 谢谢。

        【讨论】:

          【解决方案8】:

          我通过转到 File -> Invalidate Caches / Restart 在 IntelliJ (2020.3) 中修复了此问题。一旦它重新启动,我就能够毫无问题地构建和运行我的 WAR 文件。

          【讨论】:

            【解决方案9】:

            我知道这是一个老问题,但如果上述答案都不起作用,解决这个问题的一个简单方法是使用原型“maven-archetype-webapp”创建一个新的 maven 项目,然后在创建后复制你的 src文件(POJO、pom.xml、servlet、JSP 等)到这个项目中。 这对我有用。

            【讨论】:

              猜你喜欢
              • 2018-10-10
              • 2023-01-06
              • 2018-10-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-07-11
              • 1970-01-01
              • 2020-09-24
              相关资源
              最近更新 更多