0

Spring Framework 3.1.3.RELEASE&MAVENを使用して簡単なWebアプリケーションを開発しています。web.xmlからリスナーを削除しない限り、アプリケーションは起動しません。

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Tomcatは次のエラーを報告します。

INFO: Deploying web application archive sampleapp.war
11/12/2012 3:45:03 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
11/12/2012 3:45:03 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/sampleapp] startup failed due to previous errors

私のWEB.XMLは次のようになります。

<web-app 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_3_0.xsd"
    version="3.0">
    <display-name>EMS</display-name>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/*-context.xml</param-value>
    </context-param>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

この時点で、アプリケーションコンテキストファイルは空です。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">





</beans>

以下は、WEB-INF/libの下のJARファイルです。

eclipselink-2.4.0.jar             
javax.persistence-2.0.0.jar       
mysql-connector-java-5.1.21.jar   
spring-context-3.1.3.RELEASE.jar
spring-core-3.1.3.RELEASE.jar
spring-web-3.1.3.RELEASE.jar
spring-webmvc-3.1.3.RELEASE.jar

以下はWEB-INFの下のファイルです

application.properties  
spring-context.xml  
web.xml

という事は承知しています:

  • ContextLoaderListenerはspring-web-3.1.3.RELEASE.jarで利用可能です
  • JARがWEB-INF/libで使用可能な場合は、TOMCATによって選択される必要があります。

私は何が間違っているのですか?

4

3 に答える 3

4

問題は次のとおりです。コンテキスト パラメータを次のように移動して設定しますspring-context.xmlWEB-INF/classes

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

WEB-INF が CLASSPATH にありません。

于 2012-12-11T03:04:13.937 に答える
1

構成を次のように更新すると、アプリケーションコンテキストを WEB-INF ディレクトリに残すことができるということを指摘したいだけです。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/spring-context.xml</param-value>
</context-param>

このようにして、グローバル アプリケーション コンテキストは、ディスパッチャ構成と同じディレクトリに存在します。

于 2012-12-11T06:36:27.427 に答える
0

問題は、POM ファイルに Spring 依存関係が欠落していたことです。最初はPOMに次の依存関係がありました

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</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>

Tomcat のlogging.propertiesでデバッグを有効にして、依存関係を (一度に 1 つずつ) 追加したときにクラス ava.lang.NoClassDefFoundErrorを取得していることを確認しました。ava.lang.NoClassDefFoundError は、すべての依存関係が満たされるまで変化し続けました。その後、ContextLoaderListener は正常に起動しました。追加した依存関係は次のとおりです。

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-asm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- required by Spring -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>

于 2012-12-11T20:57:00.970 に答える