找不到类org.springframework.web.context.ContextLoaderListener

时间:2013-07-21 02:25:02

标签: java spring maven tomcat spring-mvc

当我使用eclipse和maven创建一个新的Spring MVC项目时,当我作为maven build运行时,它会抛出以下错误(目标是tomcat:run)。我在干净并安装后进行了构建。

SEVERE:配置org.springframework.web.context.ContextLoaderListener类的应用程序侦听器时出错

java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener

  1. 此问题的其他解决方案是从项目属性中添加部署程序集中的maven依赖项。
  2. 但是,当我右键单击属性时,不存在部署程序集选项。
  3. 我也尝试手动添加spring.jar。
  4. 类org.springframework.web.context.ContextLoaderListener存在于maven依赖项中,但仍然会抛出错误。
  5. 的pom.xml

    我的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>com.org</groupId>
        <artifactId>Remindem</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>Remindem</name>
        <url>http://maven.apache.org</url>
    
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-plugin-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>3.6.8.Final</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>4.0.0.Beta2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
            <dependency>
                <groupId>javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.12.1.GA</version>
            </dependency>
            <dependency>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
                <version>1.4</version>
            </dependency>
    
            <!-- Spring framework -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
                <version>2.5.6</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>3.0.5.RELEASE</version>
                <scope>provided</scope>
    
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>3.2.3.RELEASE</version>
                <scope>provided</scope>
            </dependency>
    
    
            <!-- Spring MVC framework -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>2.5.6</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- JSTL -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.1.2</version>
            </dependency>
    
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>
    
    
            <!-- for compile only, your container should have this -->
            <!-- <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> 
                <version>2.5</version> <scope>provided</scope> </dependency> -->
    
            <dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-api</artifactId>
                <version>7.0.19</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>
            <configuration>
              <url>http://localhost:8080/Remindem</url>
            </configuration>
          </plugin>
            </plugins>
        </build>
    </project>
    

    的web.xml

    我的web.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <display-name>Remindem</display-name>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
            </welcome-file-list>
    
         <servlet>
            <servlet-name>svn</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                    /WEB-INF/SpringAppServlet.xml               
                </param-value>
            </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet> 
     <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/SpringAppServlet.xml
        </param-value>
    </context-param> 
    
    
     <servlet-mapping>
        <servlet-name>svn</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping> 
    
     <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    </web-app>
    

1 个答案:

答案 0 :(得分:5)

这是因为您在maven pom.xml上用<scope>provided</scope>标记了Spring依赖项,并且在运行程序时没有在类路径中包含实际的jar。有两种可能的解决方案:

  1. 将依赖范围更改为编译
  2. 在运行应用程序时将包含匹配版本的弹簧罐包含在类路径中