2012-12-11 6 views
0

Spring Framework 3.1.3.RELEASE & MAVEN을 사용하여 간단한 웹 응용 프로그램을 개발하고 있습니다. 다음과 같이Spring ContextLoaderListener를 시작하는 중 오류가 발생했습니다.

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.xml 파일에서 리스너에서 수행하지 않는 내 응용 프로그램

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

Tomcat이 다음과 같은 오류를보고 시작되지 것

<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> 
/lib에

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

는 아래의 JAR 파일입니다 WEB-INF

나는 이해
application.properties 
spring-context.xml 
web.xml 

:

  • 의 ContextLoaderListener 봄에 볼 수 있습니다 -web-3.1.3.RELEASE.jar
  • JAR이 WEB-INF/lib에서 사용 가능한 경우에는를 선택해야합니다 TOMCAT의.

내가 뭘 잘못하고 있니?

+0

당신이 당신의 봄 콩 정의 파일과 완전한 스택 추적을 게시 할 수 있습니까? – ElderMael

+0

감사합니다. Mael, 응용 프로그램 컨텍스트 파일을 포함하도록 질문을 업데이트했습니다.DI를 사용하기 전에 응용 프로그램을 실행하고 실행하려는 경우 비어 있습니다. – Maro

답변

0

내 POM 파일에서 스프링 종속성 문제가 누락되었습니다. 나는 처음에 내가 종속성을 추가로 logging.properties 한 번에 (내가 클래스 ava.lang.NoClassDefFoundError을 얻는 것을 하나를보고 바람둥이에서 디버깅을 활성화

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

POM에서 다음 종속성을했다) 모든 종속성이 충족 될 때까지 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> 

I

4

여기에 문제의 : WEB-INF/classesspring-context.xml를 이동하고 다음과 같이 컨텍스트 PARAM을 설정

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

WEB-INF는 CLASSPATH에 있지 않습니다. 글로벌 애플리케이션 컨텍스트가있는

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

이 방법 :

+0

이 단계에서는 종속성 삽입을 사용하려고합니다. 결국 응용 프로그램에 다른 MVC 프레임 워크를 사용하게 될 수도 있습니다. DI 용으로 Spring을 사용하고 싶다면 디스패처 서블릿을 사용해야합니까? – Maro

+0

아니, DispatcherServlet은 Spring MVC에만 해당 – ElderMael

+0

사용중인 서블릿에 관계없이 XML을 찾을 위치를 컨텍스트 로더 수신기에 알려줘야한다. 당신은 "No Spring MVC"라고 말하지 않았으므로, 당신이 그것을 사용하고 있다는 합리적인 가정이다. 하나 이상의 서블릿이 있어야합니다. – duffymo

1

나는 당신이 당신의 설정을 업데이트 할 경우의 WEB-INF 디렉토리에있는 응용 프로그램 컨텍스트를 떠날 수 있다는 것을, 다만 지적하고 싶은, duffmo의 추론을 공유 디스패처 구성과 동일한 디렉토리에 있습니다.

+0

Stefan에게 감사드립니다. 실제로 contextConfiguration을 변경했습니다. 이를 반영하기 위해 질문을 업데이트했습니다. 하지만 그건 문제를 해결하지 못했습니다. – Maro

관련 문제