ClassPath Problem with Tomcat 4.1

5 views
Skip to first unread message

joel...@gmail.com

unread,
Jun 22, 2006, 5:42:06 AM6/22/06
to Google Web Toolkit
Hy All,

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

Sriram Narayanan

unread,
Jun 22, 2006, 9:18:45 AM6/22/06
to Google-We...@googlegroups.com
On 6/22/06, joel...@gmail.com <joel...@gmail.com> wrote:
>

> 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

joel...@gmail.com

unread,
Jun 22, 2006, 9:55:54 AM6/22/06
to Google Web Toolkit
web.xml :
---------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>testWebApp</display-name>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>test.TestServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>serviceGWT</servlet-name>
<servlet-class>test.TestServiceGWTImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>serviceGWT</servlet-name>
<url-pattern>/fr.rte.svt.MyApplication/serviceGWT</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
---------------------------------------------------------------------------------------

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>

Sriram Narayanan

unread,
Jun 22, 2006, 11:11:30 AM6/22/06
to Google-We...@googlegroups.com
On 6/22/06, joel...@gmail.com <joel...@gmail.com> wrote:
>
> web.xml :

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

joel...@gmail.com

unread,
Jun 22, 2006, 12:17:27 PM6/22/06
to Google Web Toolkit
Yep,
MD5 is OK.
That's working when I extract all classes in the WEB-INF/classes.
And it's not working when I remove theses classes.
Also, I put a log4J.jar in the Web-INF/lib and I can use log4J classes.
I don't understand...

Sriram Narayanan

unread,
Jun 22, 2006, 12:44:28 PM6/22/06
to Google-We...@googlegroups.com
On 6/22/06, joel...@gmail.com <joel...@gmail.com> wrote:
>
Hmm... could you post an ls -lR (or dir /s) of the WEB-INF/lib folder ?

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

Sriram Narayanan

unread,
Jun 22, 2006, 12:56:39 PM6/22/06
to Google-We...@googlegroups.com
On 6/22/06, joel...@gmail.com <joel...@gmail.com> wrote:
>

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

d...@yorkemail.org

unread,
Jun 22, 2006, 3:59:41 PM6/22/06
to Google Web Toolkit
Yes, the javax.servlet classes are the offenders. For my stuff, I've
repackaged the jar without them. I've also read here that putting the
jar in common/lib instead works as well.

DCY

Reply all
Reply to author
Forward
0 new messages