5

I am using GWT in my project., recently I tried converting a manual compilation of GWT + Java + tomcat to a maven project., almost I am able successfully package it to a war., BUt when I deployed on tomcat I got followin error:

EVERE: Exception while dispatching incoming RPC call java.lang.NoClassDefFoundError: javax/validation/Path at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at com.google.gwt.user.server.rpc.SerializationPolicyLoader.loadFromStream(SerializationPolicyLoader.java:196) at com.google.gwt.user.server.rpc.RemoteServiceServlet.loadSerializationPolicy(RemoteServiceServlet.java:90) at com.google.gwt.user.server.rpc.RemoteServiceServlet.doGetSerializationPolicy(RemoteServiceServlet.java:293) at com.google.gwt.user.server.rpc.RemoteServiceServlet.getSerializationPolicy(RemoteServiceServlet.java:157) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.prepareToRead(ServerSerializationStreamReader.java:455)

Here is what i added for my added in my pom.xml:

<dependency>
 <groupId>com.google.gwt</groupId>
 <artifactId>gwt-servlet</artifactId>
 <version>${gwt.version}</version>
 <scope>compile</scope>
</dependency>

<dependency>
 <groupId>com.google.gwt</groupId>
 <artifactId>gwt-user</artifactId>
 <version>${gwt.version}</version>
 <scope>provided</scope>
</dependency>

as dependencies.

Kindly help me.

What I need to add more to resolve the issue?

Vivek Kalkur
  • 2,200
  • 2
  • 21
  • 40
BalaB
  • 3,687
  • 9
  • 36
  • 58

1 Answers1

5

It is the dependency scope that is causing the problem. compile is actually the default scope so this could be omitted from the first dependency if you want.

The problem is in the second artifact which is declared as provided. This means that the application is expecting the web container to provide that library/classes. It looks like it is not providing the required classes, which results in the NoClassDefFoundError.

Removing the <scope>provided</scope>, will instruct Maven to package that library with the application and Tomcat should be able to get past that error.

There are no compile-time errors since the gwt-user is available at compile time. It is simply not available at run-time for Tomcat.

andyb
  • 43,435
  • 12
  • 121
  • 150
  • yes Yes, That's great. This worked., Now I am able to launch my application. Thanks andy thanks alot. – BalaB Dec 29 '11 at 12:38