복붙노트

[SPRING] Tomcat & Spring Web - 클래스를 찾을 수 없음 예외 org.springframework.web.context.ContextLoaderListener

SPRING

Tomcat & Spring Web - 클래스를 찾을 수 없음 예외 org.springframework.web.context.ContextLoaderListener

Eclipse를 통해 Tomcat을 시작하려고 할 때 다음 예외가 발생합니다 (프로젝트에서 마우스 오른쪽 단추를 클릭하여 실행 - 서버에서 실행).

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 12, 2011 8:46:11 PM org.apache.catalina.core.StandardContext listenerStart

Maven (m2eclipse)을 사용하여 프로젝트를 빌드하고 있습니다. Spring 라이브러리에 필요한 의존성을 추가했고, 마지막 artifact (클래스를 포함하고있다)의 lib 디렉토리에있는 spring-web.jar 파일을 볼 수있다. IDE 외부에서 응용 프로그램을 배포하면 제대로 작동합니다.

왜 이런 일이 일어날 지에 대한 어떤 조언도 높게 평가 될 것입니다.

해결법

  1. ==============================

    1.며칠 전 이클립스 인디고 (Eclipse Indigo)에서 m2eclipse (WTP 통합없이 m2eclipse-extras를 통해 추가 가능)를 사용하여 동일한 문제에 직면했습니다. 필자는 Maven 웹 모듈을 만들고 동적 웹 모듈 패싯을 수동으로 추가했습니다. Eclipse WST Tomcat Server에 배포했을 때 프로젝트가 게시 될 때 Maven 종속성이 서버로 푸시되지 않는 것으로 보입니다.

    며칠 전 이클립스 인디고 (Eclipse Indigo)에서 m2eclipse (WTP 통합없이 m2eclipse-extras를 통해 추가 가능)를 사용하여 동일한 문제에 직면했습니다. 필자는 Maven 웹 모듈을 만들고 동적 웹 모듈 패싯을 수동으로 추가했습니다. Eclipse WST Tomcat Server에 배포했을 때 프로젝트가 게시 될 때 Maven 종속성이 서버로 푸시되지 않는 것으로 보입니다.

    해결책은 간단했습니다. 프로젝트 탐색기에서 웹 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '속성'을 선택하십시오. 프로젝트 속성에서 '배포 어셈블리'를 선택하십시오.

    전개 어셈블리 특성 페이지는 Eclipse에서 서버로 어셈블 된 아티팩트로 공개 될 컨텐츠를 표시합니다. Eclipse에 모든 Maven 종속성이 게시되도록 지정해야합니다.

    그렇게하려면 '추가'버튼을 클릭 한 다음 'Java 빌드 경로 항목'을 선택하십시오. 다음을 클릭하고 메이븐 종속성을 선택하십시오. Eclipse가 프로젝트를 WST 서버에 공개 할 때 Maven 종속성 JAR 파일을 lib 폴더에 게시합니다.

    이 접근 방식은 나를 위해 일했습니다.

  2. ==============================

    2.서버 배치를 위해 이클립스가 war 파일에 넣을 것을 알려주는 가장 쉬운 방법은 오른쪽 클릭 -> 내보내기 -> WAR 파일을 수행하는 것이다. 그러면 압축을 풀고 안에 무엇이 있는지 볼 수 있습니다.

    서버 배치를 위해 이클립스가 war 파일에 넣을 것을 알려주는 가장 쉬운 방법은 오른쪽 클릭 -> 내보내기 -> WAR 파일을 수행하는 것이다. 그러면 압축을 풀고 안에 무엇이 있는지 볼 수 있습니다.

    ".settings / org.eclipse.wst.common.component"를 열면 웹 도구 webapp의 정의가 표시되고 다음과 같이 표시됩니다.

    <project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="MyApp">
        <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
        <property name="java-output-path" value="target/classes"/>
        <property name="context-root" value="MyApp"/>
    </wb-module>
    </project-modules>
    

    Eclipse의 빌드 경로에서 라이브러리에 "Maven Dependencies"가 나타나는지 확인하십시오. m2eclipse 플러그인과 WST의 마지막 버전은 자동으로 Maven 종속성을 선택하여 war 파일 내부의 WEB-INF / lib에 놓아야합니다.

    마지막으로 SpringSource Tool Suite (STS)의 최신 복사본을 가져 오는 것이 좋습니다. STS에는 최신 m2eclipse 및 WST 번들을 포함하여 여러 가지 유용한 기능이 있습니다. Tomcat (또는 해당 Tomcat 버전)과 함께 계속 사용할 수 있으며 신속하게 작동하는 Webapp를 얻을 수있는 원형 및 자습서가 있습니다.

    즐겨!

  3. ==============================

    3.이 파일들을 추가하십시오 (어느 릴리즈를 사용하든간에).

    이 파일들을 추가하십시오 (어느 릴리즈를 사용하든간에).

    apache-tomcat-8.0.35\lib 
    

    폴더 (및 서버를 다시 시작) :

    spring-aop-4.0.1.RELEASE.jar
    spring-beans-4.0.1.RELEASE.jar
    spring-context-4.0.1.RELEASE.jar
    spring-core-4.0.1.RELEASE.jar
    spring-expression-4.0.1.RELEASE.jar
    spring-web-4.0.1.RELEASE.jar
    spring-webmvc-4.0.1.RELEASE.jar
    
  4. from https://stackoverflow.com/questions/6322711/tomcat-spring-web-class-not-found-exception-org-springframework-web-context by cc-by-sa and MIT license