본문 바로가기
[ 오류 해결 ]

[에러] java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

by 히앤님 2022. 9. 20.
반응형
SMALL

SMALL

갑자기 잘 되던 프로젝트가 404가 뜬다.

Eclipse에서 Tomcat 구동 에러다. maven 사용하면 종종 발생하는 에러라고 한다.

404 뜸
에러메시지

심각: 클래스 [org.springframework.web.context.ContextLoaderListener]의 애플리케이션 리스너를 설정하는 중 오류 발생
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1420)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:533)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:149)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4686)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5232)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

잘 돌아가던 이클립스에서 톰캣이 갑자기 class를 못찾고 오류가 발생한다는 것.

또는 아래처럼 발생하기도 한다.

SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4823)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

두 경우 다 naven dependency를 등록해주면 된다.

프로젝트 우클릭 > properties > Deployment Assembly > add... > Java Build Path Entries > Maven Dependencies

maven dependency를 등록

적용 후 서버 재시작하면 정상적으로 실행된다.

Maven 메뉴에서 "Update Project Configuration"를 실행하는 경우, 해당 정보가 삭제되므로 다시 등록해주면 된다.

워낙 톰캣을 많이 써서... 포트 번호 안겹치게 맞춰주고, Build Path도 톰캣 8.5 버전으로 잘 맞춰줬는데 안되더라.
포트 번호 안겹치게

Build Path도 톰캣 8.5 버전

 String cannot be resolved to a type 에러가 뜨면 JDK 작동이 안되어서 자바 코드를 못읽는 것이니 확인...

혹시 모르니 또 톰캣에 404가 뜨면 Build Path와 포트와 라이브러리도 신경쓰자.

반응형
LIST

댓글