DispatcherServlet的ClassNotFoundException

时间:2014-07-30 22:03:00

标签: java xml spring maven spring-mvc

因为有一天我有一个非常恼人的问题 - 我无法运行任何Spring MVC应用程序:/今天我尝试编写基于Spring Documentation的东西。所以我从头创建了这个:

的web.xml

<web-app>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/root-context.xml</param-value>
  </context-param>
  <servlet>
    <servlet-name>bloger</servlet-name>
    <servlet-class>org.spring.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>bloger</servlet-name>
    <url-pattern>/bloger/*</url-pattern>
  </servlet-mapping>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>

根context.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.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="spring.blog.test"/>

    <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>

simplecontroller:

@Controller
public class SimpleController {
    @RequestMapping("/hello")
        public String helloWorld() {
        return "index";
    }
}

当然还有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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.spring.blog</groupId>
  <artifactId>learn</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>learn Maven Webapp</name>
  <url>http://maven.apache.org</url>

   <properties>
 <spring.version>4.0.1.RELEASE</spring.version>
 </properties>
 <dependencies>
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>3.8.1</version>
 <scope>test</scope>
 </dependency>
 <!-- Spring dependencies -->
 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-core</artifactId>
     <version>${spring.version}</version>
 </dependency>

 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-web</artifactId>
     <version>${spring.version}</version>
 </dependency>

 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-webmvc</artifactId>
     <version>${spring.version}</version>
 </dependency>

 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
 </dependency>

 </dependencies>
  <build>
    <finalName>learn</finalName>
  </build>
</project>

我使用Spring Tool Suite(在Windows上为3.6.0.RELEASE)运行它 - 我与开发人员博客的其他项目有类似的问题。 也许你有简单的Spring MVC模板,它有效吗?

P.S它不适用于春季v.3

lip 30, 2014 11:48:29 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /learn threw load() exception
java.lang.ClassNotFoundException: org.spring.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
    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:5176)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
    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.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)

编辑:///

好的,它在Netbeans中有效......

1 个答案:

答案 0 :(得分:0)

web.xml 中的代码中需要进行的少量更改请删除

 <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>

并更改“ root-context.xml ”并添加以下行。

    <mvc:annotation-driven />
<context:component-scan base-package="spring.blog.test"/>

您必须更改您的pom.xml并在您的pom.xml中的<outputDirectory>, <sourceDirectory>, <resources>下面提供<build>。它将告诉从哪里获取root-context.xml。