I can't manage to run my Application.
It is a small one that use RCP.
Everything works well in hosted mode.
But when I want to deploy it on Tomcat (using eclipse/WTP), I have the
following problem :
tomcat fail to load my "RemoteServiceServlet" instance.
"java.lang.NoClassDefFoundError:
com/google/gwt/user/server/rpc/RemoteServiceServlet
"
I don't understand because the gwt-user.jar is in the WEB-INF/lib of my
app...
Thanks for your help
joe
> tomcat fail to load my "RemoteServiceServlet" instance.
> "java.lang.NoClassDefFoundError:
> com/google/gwt/user/server/rpc/RemoteServiceServlet
> "
Could you post the actual stack trace and the web.xml, please ?
>
> I don't understand because the gwt-user.jar is in the WEB-INF/lib of my
> app...
>
All the more surprising.
-- Sriram
Error I got (from the throwable object in "onFailure"):
<html><head><title>Apache Tomcat/4.1.31 - Rapport
d''erreur</title><STYLE><!--H1{font-family :
sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;}
H3{font-family : sans-serif,Arial,Tahoma;color : white;background-color
: #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color :
black;background-color : white;} B{color : white;background-color :
#0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Etat HTTP
500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Rapport
d''exception</p><p><b>message</b> <u></u></p><p><b>description</b>
<u>Le serveur a rencontré une erreur interne () qui l'a empèché de
satisfaire la requête.</u></p><p><b>exception</b>
<pre>javax.servlet.ServletException: Erreur d''allocation à une
instance de servlet
at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:625)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
</pre></p><p><b>cause mère</b> <pre>java.lang.NoClassDefFoundError:
com/google/gwt/user/server/rpc/RemoteServiceServlet
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1649)
at
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:931)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1373)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1252)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:838)
at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:621)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
</pre></p><HR size="1" noshade="noshade"><h3>Apache
Tomcat/4.1.31</h3></body></html>
It seems that Tomcat is not able to make use of the gwt-user.jar
To confirm that this is not corrupted, extract its contents into
WEB-INF/classes.
jar -xvf gwt-user.jar should extract the jar's contents.
Alternatively, you could use an archive Manager such as Winzip / 7 Zip
to open the jar and extract its contents.
In case the archive is corrupted, either download the GWT again, or
extract the jar from the GWT zip.
-- Sriram
I see no reason for Tomcat to not pick up the gwt-user.jar file..
Really strange.
There was some talk on the list about moving the gwt-user.jar file to
common/lib (and ensuring to remove it from WEB-INF/lib). Could you try
that ?
-- Sriram
I just checked. I've not got the gwt-user.jar in my WEB-INF/lib. I
have the extracted classes in my WEB-INF/classes. And the gwt-user.jar
file contains javax.servlet.* classes.
When I put gwt-user.jar in the WEB-INF/lib folder, here's what I get:
=============
INFO: validateJarFile(C:\projects\webmail\WEB-INF\lib\gwt-user.jar) -
jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class:
javax/servlet/Servlet.class
=============
Until Google makes a better release ( I wonder how this slipped
through the testing !), you'll need to extract the gwt-user.jar file
into WEB-INF/classes
Or emove the javax.servlet.* classes from the gwt-user.jar and rename
this jar to gwt-user-deploy.jar and then use the jar.
-- Sriram
DCY