Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javax/validation/Path GWT Java Maven converstion

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?

like image 745
BalaB Avatar asked Dec 29 '11 07:12

BalaB


1 Answers

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.

like image 105
andyb Avatar answered Sep 22 '22 21:09

andyb