Presently, when i try to run my gwt application through eclipse I am getting a curious:
"java.lang.NoClassDefFoundError: com/google/gwt/user/client/rpc/RemoteService"
The intersting about this exception is that by command line firing a gwt:run my project loads and runs just fine.
It is thorugh eclipse, where the classpath is even larger, that the exception happens.
After creating a fancy perl script to farm the .jar files and directories indicated by oracle visual vm for sun.java.classpath system variable, i was able to track that my maven runtime project has this class under the following loacations:
Search results are:
$VAR1 = {
'/home/nmatos/.m2/repository/com/google/gwt/gwt-servlet/2.4.0/gwt-servlet-2.4.0.jar' => [
'com/google/gwt/user/client/rpc/RemoteService.class',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.class'
],
'/home/nmatos/.m2/repository/com/google/gwt/gwt-user/2.4.0/gwt-user-2.4.0.jar' => [
'com/google/gwt/user/client/rpc/RemoteService.class',
'com/google/gwt/user/client/rpc/RemoteService.java',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.class',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java'
]
};
On the other hand, when I use the google eclipse plugin to lunch the com.google.gwt.dev.DevMode , I have an even larger set of jar files containing this class (due to overhead jars that originate from automatic project configuration triggered by the eclipse plugin):
Search results are:
$VAR1 = {
'/home/nmatos/Desktop/Applications/eclipse_20121024/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201208080121-rel-r42/gwt-2.4.0/gwt-servlet.jar' => [
'com/google/gwt/user/client/rpc/RemoteService.class',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.class'
],
'/home/nmatos/Desktop/Applications/eclipse_20121024/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201208080121-rel-r42/gwt-2.4.0/gwt-user.jar' => [
'com/google/gwt/user/client/rpc/RemoteService.class',
'com/google/gwt/user/client/rpc/RemoteService.java',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.class',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java'
],
'/home/nmatos/.m2/repository/com/google/gwt/gwt-servlet/2.4.0/gwt-servlet-2.4.0.jar' => [
'com/google/gwt/user/client/rpc/RemoteService.class',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.class'
],
'/home/nmatos/.m2/repository/com/google/gwt/gwt-user/2.4.0/gwt-user-2.4.0.jar' => [
'com/google/gwt/user/client/rpc/RemoteService.class',
'com/google/gwt/user/client/rpc/RemoteService.java',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.class',
'com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java'
]
};
Juding from the stack trace, jvm standard class loaders seem be used, they should farm the jars defined in -cp system variable:
WARNING: Error starting handlers
java.lang.NoClassDefFoundError: com/google/gwt/user/client/rpc/RemoteService
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.mortbay.util.Loader.loadClass(Loader.java:91)
at org.mortbay.util.Loader.loadClass(Loader.java:71)
at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
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 org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:205)
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:249)
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:157)
at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
at com.google.gwt.dev.DevMode.main(DevMode.java:311)
Caused by: java.lang.ClassNotFoundException: com.google.gwt.user.client.rpc.RemoteService
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 48 more
Any hints on what is going wrong here?
I'd say the runtime should have an over those of class found exception, if that even existed, not the other way around.
Thanks in advance.