ClassNotFoundException : org.springframework.web.context.ContextLoaderListener
Problem
The ContextLoaderListener is used to integrate Spring with other web application.
<!-- file : web.xml --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/Spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
And the common error message is, your server can not find this Spring ContextLoaderListener class during the server start up.
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:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3915) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Solution
This is always happened in deployment and debugging environment.
1.Deployment environment
In deployment environment, just make sure your server classpath has included the Spring jar library (e.g spring-2.5.6.jar).
For Spring3, ContextLoaderListener is moved to spring-web.jar, you can get the library from Maven central repository.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.5.RELEASE</version> </dependency>
2.Debugging environment
In debugging environment, the steps may vary from different IDE, but the solution is same. In Eclipse, developers usually will create a tomcat, jboss…whatever application server for debugging, just make sure the correct Spring jars are included.
1. Double click on your debugging server
2. Click on the “Open launch configuration” to access the server environment

3. Click on the classpath tab
4. Include the Spring jar file here , it may also required common log jar due to Spring dependency.

5. Done, run your application again.

struggled with this all day … turns out that i was missing the spring-context-support jar.
i added it into my pom and everything is working now.
thanks
org.springframework
spring-context-support
${org.springframework-version}
error log:
com.ibm.ws.webcontainer.annotation.WASAnnotationHelper collectClasses unable to instantiate class
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
SRVE0293E: [Servlet Error]-[Failed to load listener: org.springframework.web.context.ContextLoaderListener]:
java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
loadLifecycleListeners SRVE0279E: Error occured while processing global listeners for the application {0}: {1}
java.lang.NullPointerException
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.inject(WASAnnotationHelper.java:266)
I’m not using Eclipse but a CLI Maven project. Spring version is 3.1.4.RELEASE. So, I tried to copy the proper spring-web and its dependencies to JBoss lib without a success.
Do you have any suggestion about this scenario? Regards.
After a long search this is what solved it for me:
go to project properties -> Deployment Assembley, click Add… , select Java Build Path Entries and add the Maven Dependencies to the Web Deployment Assembly.
In the properties/Web Deployment Assembly screen it should show up as:
Source – Deploy Path
Maven Dependencies – WEB-INF/lib
I have tried adding servlet-api.jar but then i am getting the below error:
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3787)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException) (Caused by org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException))
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
at org.springframework.web.context.ContextLoader.(ContextLoader.java:144)
… 21 more
Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException)
at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:397)
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
… 25 more
Caused by: java.lang.NullPointerException
at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:374)
… 26 more
Not able to recognize where i am doing wrong….
I have the same error:
I use Eclipse Juno, JBoss 4.2
I added the spring-2.5.6.jar as you mentioned above.
Still the same error.
This error can occur for a number of reasons for example you are running from eclipse Tomcat a spring 3.05 Release web application and java 1.X (ie 1.6)is set in Project build path (1.6), in project compiler (1.6) but not in maven!!! (maven works with default 1.5), so eclipse tries to bind your project with a default 1.5 old java and your project fails with org.springframework.web.context.ContextLoaderListen ..
http://sosiouxme.wordpress.com/2012/05/21/470/
You have to set the java version in maven as well:
org.apache.maven.plugins
maven-compiler-plugin
2.1
1.6
1.6
hi,
org.springframework.web.context.ContextLoaderListener
org.springframework.web.context.request.RequestContextListener
is not working in my jbossas 7server.. but it is not working.. please reply ASAP..
I updated my sts from 2.5 to 2.9 and not working, always show this error. I did all what do you say but it is not working :(
INF
Iam facing this error while running the application Please help me!!
O: Starting service Catalina
Jul 12, 2012 5:37:04 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
add javax.servelet.jar file in library and run again….
This is how I fixed this issue:
Create a “lib” folder inside the “WEB-INF” folder and then copy all the spring jars and commons-logging jar (and any other dependency jar) in that newly created lib folder.
Hello,
I’m creating a sample spring application but even i’m not able to start the server using eclipse IDE. This is the error
GRAVE: Erreur lors de la configuration de la classe d’écoute de l’application (application listener) org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
at java.lang.ClassLoader.findBootstrapClass(Native Method)
I have loaded all the jar as a user libraries. I have tried your Debugging environment but it’s showing same error.
Please give your solution on this.
Thanks in advance.
Hi Yang,
I’m creating a sample spring application but even i’m not able to start the server using eclipse IDE. This is the error
ClassNotFoundException : org.springframework.web.context.ContextLoaderListener
I have loaded all the jar as a user libraries. I have tried your Debugging environment but it’s showing same error.
Please give ur suggestion/solution on this.
Thanks in advance.
I am getting same kind of error in RAD, websphere environment how to fix this, can you please help me ??
Make sure Spring jar is available in your WebSphere classpath.
Hi mkyong,
I run into similar problem, which is why I come to your blog now. You are very correct that the problem is deployment. Thanks a lot!
BC
i resolved the problem with removing all libraries from WEB-INF/lib as they are already loaded by tomcat and included log4j properties in the projects build path. after importing one log4j.properties into the project the contextlistener runs proper.
Hi Yang,
Thanks for such simple and wonderful articles.
I am getting the same error using spring 3.1.0.
As Spring.jar is not included in this version, please tell me how to fix the problem without using maven and ant.
I have tried all the options mentioned here( adding libraries to tomcat folder).
Thanks.
Sikinder.
Maven or Ant is doing the same thing, copy spring.jar to your project classpath.
I got the same error, together with several others, during Tomcat startup with a Spring project deployed.
But in my case, the errors were caused by the project facet “Java” being set to 1.5 instead of 1.6
I got an error like this.
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:1645)
…
You can find the solution of this error here
http://www.mustafakurkcu.com/java/221-javaeemoduledependencies.html
The error changes to:
Tomcat, right? Your Tomcat can’t find this class
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
if not mistake, it should be “servlet-api.jar” in Tomcat, make sure it’s included in your Tomcat classpath.
Copy these 4 jars in tomcats lib dir
com.springsource.org.apache.commons.digester-1.8.1.jar
com.springsource.org.apache.commons.collections-3.2.1.jar
com.springsource.org.apache.commons.beanutils-1.8.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
Thanks a lot , i was facing this error from monday and i’ve tried many issus but without result, thank you so much
Still doesn’t work for me, driving me nuts. WHY is it necessary to find the correct jar (whichever it may be) to enable Tomcat deployment properly??
patient, of course Tomcat need to find correct jar for deployment, do you have problem in production or IDE environment?
Hi I have the same problem, I created a web project and trying to use Spring Dynamic Modules, I copied the needed library in the lib directory of my project. I am using Eclipse and I try to deploy the project in the tomcat directly from the IDE. The first error was: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
According to the comments in the thread I added the spring-web.jar and/or the web library of SPring DM to the tomcat library, and the error changed to: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener but now I amnot able to remove the error neither adding servlet-api.jar nand with javax.servlet…..Can you please help me? Which are the libraries to add? I am using Spring DM 2.0.0.M1, Spring 3.0.0.RC1 e tomcat6 in STS eclipse environment.
Marco
I don’t understand this. I created “Dynamic Project” in STS, I added all necessary dependiences (also spring-web 3.0.2.RELEASE) and in Maven Dependiences in my project org.springframework.web.context.ContextLoaderListener exists, so why I need configure in your way?
if you do not have this problem, then just ignore it :)
i configure the spring jar file after that also i get same class not found exeception
Make sure the jar is deployed into correct folder
sir i am lakshmanan.i am work to java platform.javac compile my coding it is not run it is show class not found or null pointer exception or class loader
example for create image button and label and please send sql connect coding
wait for your reply by lakshmanan
Show me your last caused by error message.
tomcat is not recogized librarys in folder
Go To project properties – > Deployment Assembly Option and add Maven Dependencies from Java Build path entries.
Thanks!!!.
My Fix was: I manually added all the dependencies from Java Build Path Entries.
the mvn eclipse:eclipse -Dwtpversion=2.0 worked for my first project but when i created again a new project then it won’t work anymore so i tried the above fix.
Thanks!