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


290

나는 이것을 Build Path 에 포함시켰다 .

  • 모든 스프링 라이브러리
  • Apache Tomcat 7.0 라이브러리

시작하는 동안 프로젝트가 계속 실패합니다.

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 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener
    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 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    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)

에서을 (를 org.sprintframework.web-3.1.0.M1.jar) 볼 수 있습니다 org.springframework.web.context.ContextLoaderListener.

Google의 누군가 spring.jar가 포함해야 한다고 말하지만 spring.jar3.x 배포판 에는 표시되지 않습니다 .

이클립스 3.6.2
톰캣 7

편집 : Spring Forum (오프라인)의 누군가가 프로젝트 속성에서 "종속성 자동 업데이트"를 확인해야한다고 말했지만 프로젝트 속성에는 이와 같은 것이 보이지 않습니다.


1
프로젝트를 닫고, 새로운 직장을 만들고, POM의 의존성을 확인하십시오. 이 문제에 직면했지만 의존성 수정 후 수정되었습니다
MLS

.war / lib 폴더의 내용을 게시 할 수 있습니까? 또는 적어도. * spring. * \. jar 인 모든 것.
Simeon

pom에 다음 종속성을 추가하더라도 여전히 동일한 오류가 발생했습니다. <dependency> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artifactId> <version> {Spring-Version} </ version> </ dependency> 다른 사람들이 제안한대로 maven을 추가했습니다. 배포 어셈블리에 대한 종속성 그리고 다른 종속성으로 pom을 업데이트하고 maven> update project를 수행하면 오류가 계속 발생합니다. 배포 어셈블리를 검사하면 maven 종속성이 시작되었습니다. 위의 과정을 다시 반복해야했습니다.
Tadele Ayelegn

1
솔루션 은 대부분 효과가있었습니다. 배포 어셈블리에 종속성을 추가하십시오.
lokesh

답변:


777

Eclipse 관리 Tomcat에서 스프링 웹 애플리케이션을 실행할 때 비슷한 문제가 발생했습니다. 프로젝트의 웹 배포 어셈블리에 maven 종속성을 추가 하여이 문제를 해결했습니다.

  1. 프로젝트 속성을여십시오 (예 : 프로젝트 탐색기에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하십시오).
  2. "배치 어셈블리"를 선택하십시오.
  3. 오른쪽 여백에서 "추가 ..."버튼을 클릭하십시오.
  4. 지시문 유형 메뉴에서 "Java 빌드 경로 항목"을 선택하고 "다음"을 클릭하십시오.
  5. Java 빌드 경로 항목 메뉴에서 "Maven Dependencies"를 선택하고 "Finish"를 클릭하십시오.

웹 배포 어셈블리 정의에 "Maven Dependencies"가 추가되어 있어야합니다.


6
그것이 당신이해야 할 방법, 식의 올바른 방법입니다.
pap

18
나는 같은 문제를 겪고 있었다. 그러나 '속성'(멀티 모듈 maven 프로젝트의 모듈)에서 '배포 어셈블리'를 볼 수 없습니다.
gtiwari333

9
매우 성가 시지만 이것은 정확합니다. 아마도 제 생각에는 m2e 플러그인이 처리해야 할 것입니다.
RickB

10
웹 배치 어셈블리 정의에 Maven 종속성이 추가 된 것을 볼 수 있지만 계속 오류가 발생합니다.
dabadaba

10
Java 빌드 경로 항목에 아무것도 포함되어 있지 않으면 어떻게됩니까? 나는 그때입니다.
vdolez 2019

117

Eclipse WDT를 사용할 때 때때로 같은 일이 발생합니다. 이것이 수정되지 않고 이전에 작업 한 프로젝트에서 발생할 때 특히 실망 스럽습니다. 이것이 마지막 시나리오에서 해결하기 위해 수행 한 작업입니다.

  1. Tomcat 중지 (실행중인 경우)
  2. "서버"보기를여십시오. 창>보기 표시> 기타> 서버> 서버
  3. Tomcat 서버> Tomcat 작업 디렉토리 정리를 마우스 오른쪽 단추로 클릭하십시오.
  4. Tomcat 서버를 마우스 오른쪽 버튼으로 클릭> 청소
  5. 서버를 다시 시작하십시오

이것은 일반적으로 언급 한 문제를 해결합니다.


3
특정 상황에 대한 버그 보고서가 있습니다 ( bugs.eclipse.org/bugs/show_bug.cgi?id=365748 ). Eclipse 개발자는 이에 대한 추가 정보와 문제점 재현 방법이 필요합니다.
Chucky

1
이 방법은 모두에게 유연한 솔루션이므로이 답변은 답변으로 표시되어야합니다. 좋은 일 Chepech
Java 질문

3
이것은 실제로이 문제에 대한 가장 간단한 해결책입니다. 감사합니다 Chepech!
Badal

2
이것은 Eclipse 4.4를 사용하는 데 도움이되지 않았습니다. 바람둥이에 Susie의 메소드 remove / add 배치를 사용해야했습니다. 청소를 수행 할 때 Tomcat 배포 폴더를 모니터링하고있었습니다. 정리로 인해 배포 폴더가 정리되지 않는 이유를 모릅니다.
축복 된 괴짜

1
배포 어셈블리를 사용하는 것이 올바른 방법이지만 일부 손상이나 기타 이유로 인해 작동하지 않으면 실제로이 정리로 해결됩니다.
Calabacin

26

"Clean Tomcat Work Directory"또는 "Clean .."을 사용해보십시오. 이것은 모든 게시 된 상태를 버리고 처음부터 다시 게시해야합니다.


이 솔루션을위한 Thx! 위의 답변 으로이 문제를 해결하지 못했지만 귀하의 문제는 해결되었습니다.
GreenTurtle

25

IntelliJ IDEA를 사용했는데 컴파일이 성공했지만 Tomcat을 시작할 때 다음과 같이 말합니다.

Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

처음에는 JAR이 누락되었다고 생각했지만 제대로 작동했습니다.

솔루션 : File > Project Structure > Artifacts, Output Layout오른쪽 패널에서 두 번 클릭하여 Available Elements이름이 같은 라이브러리 가 왼쪽 분할 창 Maven:...으로 이동합니다 WEB-INF/lib.

Tomcat을 승인하고 다시 시작하십시오.


영업 이익은 이클립스를 사용했다로이 답변은 질문 질문에 대한 정확히 관련이 없습니다
아담 미칼

10
그러나 그것은 나를 도왔습니다.
udaybhaskar

8

이것은 분명히 Eclipse 관련 문제입니다. 나를 위해 일한 것은 일식 서버 탭에서 새 서버를 만드는 것입니다. 그런 다음이 새 서버에서 응용 프로그램을 실행하면 작동합니다.



7

위에서 언급 한 모든 것이 작동하지 않으면 다음을 시도하십시오. 그것은 나를 위해 일했다.

서버에서 프로젝트를 제거하고 서버 다시 시작> 서버에 프로젝트 추가> 서버 다시 시작을 클릭하십시오.

자세한 지시 사항 :

1. Right click on server > Add and Remove
2. Select your project > Remove > Finish
3. Restart your server
4. Right click on server > Add and Remove
5. Select your project > Add > Finish
6. Restart your server again.

5

Tomcat 7 런타임으로 구성된 이클립스 프로젝트와 동일한 문제에 직면했습니다.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 속성으로 이동하십시오. 배포 어셈블리를 클릭하십시오. 사용자 라이브러리로 컴파일하는 동안 만든 스프링 라이브러리 항아리가 누락 된 것을 알 수 있습니다. 단지 항아리를 추가하면 Tomcat을 시작하는 동안 콘솔에 오류가 표시되지 않습니다


5

maven을 사용하는 경우 프로젝트가 아직 빌드되지 않았습니다. 먼저 mvn clean package다시 배포를 시도하십시오.


Eclipse 3.6.2 + Tomcat 7
emeraldhieu

4

이클립스 루나 솔루션 :

  1. maven 웹 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. '속성'메뉴를 클릭하십시오
  3. 팝업 창의 왼쪽에서 '배치 어셈블리'를 선택하십시오.
  4. 팝업 창의 오른쪽에있는 '추가 ...'버튼을 클릭하십시오.
  5. 팝업 창이 하나 더 나타납니다 (New Assembly Directivies)
  6. 'Java 빌드 경로 항목'을 클릭하십시오.
  7. '다음'버튼을 클릭하십시오
  8. '완료'버튼을 클릭하면, 새로운 Assemby Directivies 팝업 창이 비정상적으로 닫힙니다.
  9. 이제 '적용'버튼과 확인 버튼을 클릭하십시오.
  10. 웹 애플리케이션을 실행하십시오.

4

IntelliJ IDEA를 사용하고 Tomcat 서버에 응용 프로그램을 배포하는 경우 파일 메뉴-> 프로젝트 구조 선택-> 이슈 클릭-> 항아리 선택 및 마우스 오른쪽 버튼 클릭-> WEB \ lib 입력-> 서버 다시 시작여기에 이미지 설명을 입력하십시오


3

실제로 이것은 Tomcat의 문제입니다. 프로젝트의 'lib'폴더로 이동하여 모든 '봄'관련 항아리를 여기에 복사하십시오. 프로젝트를 새로 고치면 모든 것이 좋습니다. 바람둥이가 스프링 코어 클래스를 찾을 수 없기 때문에이 문제는 언젠가 지속됩니다.


2

나는 또한 같은 오류가 있었다. POM 파일에 아래의 종속성을 추가하지 않았습니다.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.7.RELEASE</version>
  </dependency>

그러나 내 의존은이 의존성을 추가하기 전에도 실행되었습니다. 그러나 어느 시점에서 멈추고 위의 동일한 오류가 발생하기 시작했습니다.

아무도이 오류를 해결할 수 없다면이 링크로 해결할 수도 있습니다


1
<dependency> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artifactId> <version> 4.1.6.RELEASE </ version> </ dependency> 이것을 추가하면이 오류를 해결하는 데 도움이되었습니다.
Ashutosh S

2

나는 같은 문제가 있었다. 내 pom에 스프링 웹 종속성 을 추가하여 문제를 해결했습니다 . ContextLoaderListener 클래스 를 갖는 spring-web jar을 사용하십시오. ContextLoader는 ServletContextListener를 구현하고 org.springframework.web.context 패키지에 상주합니다. 3.0.4를 사용했습니다.


1

나는 시도했다

  • 깨끗한 mvn 프로젝트
  • 깨끗한
  • 바람둥이 작업 디렉토리를 자동으로 청소하십시오
  • 종속성 업데이트

적어도 일시적으로 작동 한 유일한 것은 웹 배치 어셈블리 정의에 Maven 종속성을 추가하는 것이 었습니다.

그러나 이것은 영원히 작동하지 않습니다! 며칠 후 작동이 중지됩니다. 내 솔루션은 Maven Dependencies를 제거하고 변경 사항을 적용한 다음 Maven Dependencies를 다시 추가하는 것이 었습니다.

사용하고 있습니다-Eclipse Juno-Embedded Maven-Tomcat 7


1

gradle 사용자의 경우 다음 단계로 작동합니다.

1) Eclipse의 서버 탭에서 Tomcat 서버 중지 및 삭제

일식 바람둥이 탭

2) Tomcat 설치에서 webapp 및 작업 디렉토리를 정리하십시오 (참조, 방법 : Tomcat의 캐시를 지우고 오래된 JSP 문제를 해결하십시오 )

$ rm -r /usr/local/AT7028/work/*
$ rm -r /usr/local/AT7028/webapps/WAR_NAME

3) 빌드 도구를 사용하여 프로젝트를 정리하고 식화하십시오.

$ ./gradlew clean eclipse// mvn사용자를 위한 각각의 명령을 실행$ mvn clean package

4) 일식에서 새 Tomcat 서버를 구성하고 프로젝트를 다시 실행하십시오.


1

나도 같은 문제에 직면하고 .... 아래 단계에 따라 해결되었습니다.

RC (웹 프로젝트를 마우스 오른쪽 버튼으로 클릭)-> 특성-> 배치 어셈블리-> 추가-> Java 빌드 경로 항목-> 다음-> 누락 된 jar 파일 선택-> 다음-> 완료

응용 프로그램이 성공적으로 실행 중입니다 ...


OP의 오류가 있지만 배포 어셈블리에 jar 파일이 없습니다.
Blamkin86

1

나는 같은 문제가 있으며 위에서 언급 한 단계를 사용하여 문제를 해결했지만이 문제가 다시 발생하면 다음을 시도해보십시오.

RC (웹 프로젝트를 마우스 오른쪽 단추로 클릭)-> 특성-> 배치 어셈블리-> 추가-> Java 빌드 경로 항목-> 다음->

다음을 클릭 한 후 옵션 다음과 종료가 비활성화 된 유일한 빈 창입니다. 지금 무엇을 할 수 있습니까?


1

나는 같은 문제에 직면했다.

서버 런타임 구성에 서버를 추가하여 Eclipse를 다시 시작한 후 구성에서 서버를 제거하고 다시 추가했습니다.


1

나를 위해 수정은 내 webapp 모듈> Maven> Update Project를 마우스 오른쪽 버튼으로 클릭하는 것이 었습니다.


1

이 상황에 가장 적합한 빠른 솔루션은 작업 공간의 .metadata 폴더를 삭제하고 프로젝트를 다시 가져 오는 것입니다. 다른 모든 옵션을 시도해도 성공을 보장하지는 않습니다. 때때로 위의 솔루션이 작동하면이 구성을 수정하는 데 소중한 시간을 소비하게됩니다.

어느 날 나는 워크 스테이션을 청소하기로 결정했고, 프로젝트를 다른 클라이언트에 따라 적절한 폴더에 정리했습니다. 결과적으로 모든 것이 엉망이되었습니다. 하루 종일 보낸 후에는 고정 된 작업 공간으로 끝나지 않았습니다. 다음 날 작업 공간의 .metadata 폴더를 삭제하고 모든 프로젝트를 다시 가져 왔습니다. 빙고 모든 세트.


1

놓다 <packaging>war</packaging>Maven을 사용하는 경우 pom.xml을 . 이 경우, 단지 용기 포장 일 수 있습니다

배포 어셈블리에 Maven 라이브러리가 있어야합니다


0

"프로젝트 구성 업데이트"를 사용하면 프로젝트의 빌드 경로가 엉망이되었습니다.

수정 : "빌드 경로 구성 ..."메뉴를 열고 (프로젝트를 마우스 오른쪽 버튼으로 클릭) 각 소스 폴더에 대해 포함 / 제외 옵션을 수정하십시오. 그것은 나를 위해 일했다.


0

많은 경우에 그것은 자바 패싯 문제입니다 .jdk 또는 jre 또는 jsp 버전은 maven 프로젝트 페이스와 다릅니다.


0

실제 솔루션은 "m2e-wtp-Maven integration for WTP"를 설치하는 것이 었습니다. 이 경우 Marcelo의 솔루션은 필요하지 않습니다.


0

위에서 아무것도 작동하지 않으면 리스너 클래스에서 .class를 제거하십시오.

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>

0

이것은 나를 위해 작동합니다 ..

maven 웹 프로젝트를 마우스 오른쪽 버튼으로 클릭 '속성'메뉴 클릭 팝업 창 왼쪽에서 '배치 어셈블리'를 선택하십시오. 팝업 창 오른쪽에있는 '추가 ...'를 클릭하십시오. 팝업 창을 하나 더 표시하십시오 (새 어셈블리 지시문) 'Java 빌드 경로 항목'을 클릭하십시오. '다음'버튼을 클릭하십시오. '마침'버튼을 클릭하고, 이상적으로 새 어셈블리 지시문 팝업 창을 닫으십시오. 이제 '적용'버튼과 확인 버튼을 클릭하십시오.


0

Gradle을 사용하여 IntelliJ 프로젝트에서 Hibernate 매핑을 변경 한 후에 나에게 이런 일이 발생했습니다. 단순히 프로젝트를 재건하면 나를 위해 일했습니다.


0

나는이 분기에 두 번이 문제에 부딪쳤다. 이번에는 git diff에 최소한의 변경 사항 요약이 있었으며 일식에서 재설정 클래스 경로 (WEB-INF / lib 종속성 누락)에 대한 문제를 추적했습니다. 부모 / 형제 maven 프로젝트를 가져 오거나 꺼낼 때마다 발생하는 것으로 보입니다.

스프링 항아리를 Tomcat 웹 컨테이너 라이브러리에 추가하는 것에 대한 언급이 있습니다. 이것은 괜찮으며 대부분의 EE 서버가 실행되는 방식입니다. 그러나 tomcat의 클래스 로더 트리에서 스프링을 높이 올리면 전쟁 컨텍스트의 클래스 로더 레벨보다 높은 수준으로 실행됩니다. 라이브러리를 전쟁 당 또는 하위 레벨의 클래스 로더에 두는 것이 좋습니다.

우리는 일식에서 구조 프로젝트가 변경된 후 잘린 .classpath 후에 다음을 볼 수 있습니다.

Dec 18, 2016 11:13:39 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener

내 클래스 경로가 재설정되고 WEB-INF / lib 종속성이 제거되었습니다.

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

다시 집어 넣어

<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

그리고 당신은 괜찮을 것입니다.

감사합니다 / 마이클


0

빌드 경로에는 lib가 있지만 배포 어셈블리에는 lib가 없을 때 이것을 얻었습니다. 또한 context.xml이 누락 된 경우.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.