EDIT : This has begun working and I have not changed anything, this is the second time that I’ve encountered this issue, my app works for a while and then just stops suddenly working.
Is GAE unreliable when it comes to Spring ? Has anyone else experience similar GAE issues ?
I’m unable to display an animated gif on a jsp page. The gif displays locally but when I put live on app engine server an error is thrown. Here is my setup :
Ive added the images dir in appengine-web.xml :
<static-files> <include path="/images/**.*" /> </static-files>
My project structure :

I load the image using html code : `<img src="/images/ajax-loader.gif"/>`
But im receiving the error :

A java.lang.NoSuchMethodError: is being thrown in admin console, but I fail to see how this could be anything related to the loading of a gif image ?
The gif im using is taken from http://www.ajaxload.info/ & indicator type is “indicator”
java.lang.NoSuchMethodError: org.springframework.jndi.JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable()Z
at org.springframework.web.context.support.StandardServletEnvironment.customizePropertySources(StandardServletEnvironment.java:85)
at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101)
at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)
at org.springframework.web.context.support.StandardServletEnvironment.<init>(StandardServletEnvironment.java:43)
at org.springframework.web.servlet.HttpServletBean.<init>(HttpServletBean.java:90)
at org.springframework.web.servlet.FrameworkServlet.<init>(FrameworkServlet.java:211)
at org.springframework.web.servlet.DispatcherServlet.<init>(DispatcherServlet.java:303)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:202)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:422)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)
External libs :

NoSuchMethodError is almost always caused due to using incompatible versions of libraries. In this case you are probably using different version of Spring libraries. For example spring-web-3.1.0.jar and spring-context-3.0.x.jar. So, try to update all Spring jars to last version.
If you tell us which versions are you using maybe we can help you more.
EDIT: Spring dependencies in pom.xml
EDIT:
Well, what this NoSuchMethodError is telling us is your application is executing a StandardServletEnvironment which believes that JndiLocatorDelegate has a method named isDefaultJndiEnvironmentAvailable(), but the method doesn’t exist when actually calls it. But this method exists in org.springframewor.context-3.1.1.jar, as you can see here (version 3.1.0).
So, the problem can be a couple of things:
There are more than one JndiLocatorDelegate in the classpath. This is possible if you are using another library as metrics.collector. In Eclipse you can press Ctrl+Shift+T and type JndiLocatorDelegate in order to be sure that ONLY ONE class named like this is found in the project and to see if that class contains isDefaultJndiEnvironmentAvailable() method.
For some strange reason, you are not executing your current code. Try cleaning your project, temp folders and Tomcat work directory.
If this doesn’t help you, please give us a list of all jars included in your war.