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.

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

Leave a Reply

avatar
newest oldest most voted
Mohamed Yangui
Guest
Mohamed Yangui

I had a similar problem when running a spring web application in an Eclipse managed tomcat. I solved this problem by adding maven dependencies in the project’s web deployment assembly.

Open the project’s properties (e.g., right-click on the project’s name in the project explorer and select “Properties”).

Select “Deployment Assembly”.

Click the “Add…” button on the right margin.

Select “Java Build Path Entries” from the menu of Directive Type and click “Next”.

Select “Maven Dependencies” from the Java Build Path Entries menu and click “Finish”.

You should see “Maven Dependencies” added to the Web Deployment Assembly definition.

Shobhit Jaiswal
Guest
Shobhit Jaiswal

Thanks Mohamed..it worked for me

Azat Salimgaraev
Guest
Azat Salimgaraev

I had the same problem with Inteligi IDEA.
What should you do to solve this problem when you are usin IDEA
1) Click File -> Project Structure
2) Click Artifacts -> select your artifact
3) In right column in “Available Elements” column double-click all libraries
4) Click “Apply” -> Click “??”
Done! Now when maven will build war file, it will include libraris frop step 3 to your war file in lib folder

Erycoking
Guest
Erycoking

just saved my life thanks, your solution worked for me.

Talib Hussain Gill
Guest
Talib Hussain Gill
Julia Benatti
Guest
Julia Benatti

Awesome article!

I am using Gradle. Which is the process?

Vijay
Guest
Vijay

Can you pls advice other solution without adding the jar manually jn class path?

Vijay
Guest
Vijay

Without adding the jar manually in class path, is there any solution ? Thanks

DMiller
Guest
DMiller

Maybe this will help someone. This entry in the .classpath file was messed up. The 2nd attribute was gone from mine:

Sansun
Guest
Sansun

On a Struts2 Spring 4 Integration project adding the spring-web.jar causes Tomcat Catalina sartup error. I do see the dependency show spring-web but in the launch classpath its spring.jar. I dont see a spring jar in my maven repo, am I missing something ? or What jar file I have to load for Spring4?

palossyl
Guest
palossyl

Thank you very much!

ramu reddy
Guest
ramu reddy
Hi,i am getting the same exception even followed above steps.This is my code pom.xml:- 4.0.0 com narayana war 0.0.1-SNAPSHOT narayana Maven Webapp http://maven.apache.org 3.2.6.RELEASE org.hibernate hibernate-annotations 3.3.1.GA com.oracle ojdbc14 10.2.0.2.0 asm asm 1.5.3 junit junit 3.8.1 test javax.servlet servlet-api 2.5 org.springframework spring-orm ${spring.version} org.springframework spring-core ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-webmvc ${spring.version} commons-dbcp commons-dbcp 1.2.2 org.hibernate hibernate-core 3.6.3.Final javassist javassist 3.12.1.GA org.springframework spring-hibernate3 2.0.8 com.eshop web.xml:- Spring3MVC Login.jsp spring org.springframework.web.servlet.DispatcherServlet 1 spring *.html contextConfigLocation /WEB-INF/spring-servlet.xml org.springframework.web.context.ContextLoaderListener spring-servlet.xml:- com.eshop.EShopUser org.hibernate.dialect.OracleDialect thread true The remaining code consists My jsp pages,Controller classes,service classes and DAOs. But when i run this… Read more »
Berguiga M.Amine
Guest
Berguiga M.Amine

Thanks

iheb
Guest
iheb

I had the same error I resolved it like that (I use eclipse) Right click on your project –> “Propeties” -> Deployment Assembly -> Add -> Java Build Path Entries -> Maven Dependencies (I selected them all) -> Finish

g00glen00b
Guest
g00glen00b

This indeed solved my issue as well. This is a way better solution than provided in this article. Now you don’t have to add dependencies to Tomcat anymore and are all dependencies still managed by Maven.

Ravi
Guest
Ravi

Good suggestion. Worked for me as well after facing the same issue.

Ramz~
Guest
Ramz~

Great solution, fixed my issue instantly.

Sudhakar
Guest
Sudhakar

Hi, I am also getting this same error
Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘step1’: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/retry/policy/RetryContextCache

Not able to fix this. Please can someone help. I tried all above combinations and put spring jar also in the build path.

Bob
Guest
Bob

FINALLY! THANK YOU!

The weird thing is, before starting this tutorial, it was added already. Then, for some reason, in the midst of this tutorial, it decided to remove it, so I didn’t even think to check it again until I came across this and though “what the hell, let’s make sure.”

Damn you eclipse…

trackback
NoClassDefFoundError from tomcat. is there something wrong with my pom?CopyQuery CopyQuery | Question & Answer Tool for your Technical Queries,CopyQuery, ejjuit, query, copyquery, copyquery.com, android doubt, ios question, sql query, sqlite query, no

[…] getting a NoClassDefFoundError. the correct jars are in my pom file, so i am befuddled. following this advice, i added the problematic jar to my bootstrap entries, and it got rid of that particular […]

Nupur
Guest
Nupur

Finally after wasting 5 hrs this worked.. Thanks

Teela
Guest
Teela

Thanks a lot!! This post was very very helpful.

rani
Guest
rani
17 Sep, 2013 2:59:35 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.6.0_03\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.6.0_03/bin/client;C:/Program Files/Java/jre1.6.0_03/bin;C:/Program Files/Java/jre1.6.0_03/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Windows Live\Shared;E:\java\eclipse-jee-juno-win32\eclipse; 17 Sep, 2013 2:59:36 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:swytchboard’ did not find a matching property. 17 Sep, 2013 2:59:37 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler [“http-bio-8080”] 17 Sep, 2013 2:59:37 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler [“ajp-bio-8009”] 17 Sep, 2013 2:59:37 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 2318 ms 17 Sep, 2013 2:59:37 PM org.apache.catalina.core.StandardService… Read more »
JavaWorld
Guest
JavaWorld

Hi
I have added spring-web-3.0.3.jar, but now I am getting error :

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContextException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2483)
at java.lang.Class.getConstructor0(Class.java:2793)
at java.lang.Class.newInstance(Class.java:345)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:127)
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: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:724)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContextException

KTD
Guest
KTD

… resolved by adding the artifact below in the [pom.xml] :

org.springframework
spring-context
${spring.version}

Trongnhan Huynh
Guest
Trongnhan Huynh

i added dependency above,but it has been still error

shiv
Guest
shiv

Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘step1’: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/retry/policy/RetryContextCache

i am getting this error while runing test class using . main method ..

matt1616
Guest
matt1616

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)

John
Guest
John

That worked very well for me! Thank you so much!

Wojtek
Guest
Wojtek

Helped in my case, too! Thank you!

Marcelo F Andrade
Guest
Marcelo F Andrade

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.

easyplanner.cu.cc
Guest
easyplanner.cu.cc

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

Salim.s
Guest
Salim.s

THx A lot!!!!

Marina
Guest
Marina

Very thanks!!! you save me

Venkat
Guest
Venkat

yes must do this thank for remembering. some times it automatically add mavendependecies if not we have to add
thank u

Mohit Khanna
Guest
Mohit Khanna

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….

Pranav
Guest
Pranav

I have the same error:

493 ERROR [ContainerBase] Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener

I use Eclipse Juno, JBoss 4.2

I added the spring-2.5.6.jar as you mentioned above.

Still the same error.

monica
Guest
monica

I too facing the same error.with the same configuration as you.If U find the solution plz intimate me

George
Guest
George
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
trackback
Apache CXF – ClassNotFoundException: org.springframework.context.ApplicationListener « Blogging googling
madhusdudan dutta
Guest
madhusdudan dutta

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..

murkein
Guest
murkein

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 :(

venugopal
Guest
venugopal

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

manju
Guest
manju

add javax.servelet.jar file in library and run again….