ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

When you happen to work with a Spring MVC Framework based Web application. Then java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener is a common problem which will be occurring during deployment. Spring MVC throws this exception when it is not able to find the “org.springframework.web.context.ContextLoaderListener” class which loads up the all the Spring MVC configuration files and other configuration files which is declared in the web.xml.

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value> 
       /WEB-INF/SpringMVC-servlet.xml, 
       /WEB-INF/SpringSecurity.xml 
    </param-value>
 </context-param>

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

This exception will mostly happen when you start the server

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:529)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:511)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4888)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
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.run(FutureTask.java:262)
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:745)

Sep 07, 2016 12:24:49 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
Sep 07, 2016 12:24:49 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Sep 07, 2016 12:24:49 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringMVCTutorial] startup failed due to previous errors
Sep 07, 2016 12:24:49 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 07, 2016 12:24:49 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Sep 07, 2016 12:24:49 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 5192 ms

Solution 1:

Check whether the spring web dependency is added into your project.

  • If your project is running with Spring 3.0 or greater, then add spring-web.jar in your classpath
  • If you project is running with Spring 2.0 or lower, then add spring.jar in your classpath

Solution 2:

If the above solution didn’t work and still getting the exception, then those dependencies must be added to project deployment assembly as well.

Follow the below steps to add the dependencies to the deployment assembly.

  1. Open the Project Properties, right click the project –> Properties (or) press Alt+Enter to open Project Properties org.springframework.web.context.ContextLoaderListener
  2. Now click on Next, which opens the “New Assembly Directive”. Select all the Jars and click on FinishDeploment Assembly
  3. Now your Web Deployment Assembly should have all the Jars in it. Now Click on Ok.Web Deploment Assembly
  4. Thats all you have to do, now start the server, the server should start start without any issues.

 

Leave a Reply

Your email address will not be published. Required fields are marked *