Root Class ClassNotFoundException

I am trying to write a Vaadin Application, but every time I load my application I get the following Exception:
HTTP Status 500 -

type
Exception report

message


description
The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: com.vaadin.terminal.gwt.server.ServletPortletHelper$ApplicationClassException: com.example.testing.TestingRoot could not be loaded
com.vaadin.terminal.gwt.server.ApplicationServlet.init(ApplicationServlet.java:65)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

root cause

com.vaadin.terminal.gwt.server.ServletPortletHelper$ApplicationClassException: com.example.testing.TestingRoot could not be loaded
com.vaadin.terminal.gwt.server.ServletPortletHelper.verifyRootClass(ServletPortletHelper.java:75)
com.vaadin.terminal.gwt.server.ServletPortletHelper.getApplicationClass(ServletPortletHelper.java:42)
com.vaadin.terminal.gwt.server.ApplicationServlet.init(ApplicationServlet.java:60)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassNotFoundException: com.example.testing.TestingRoot
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
com.vaadin.terminal.gwt.server.ServletPortletHelper.verifyRootClass(ServletPortletHelper.java:67)
com.vaadin.terminal.gwt.server.ServletPortletHelper.getApplicationClass(ServletPortletHelper.java:42)
com.vaadin.terminal.gwt.server.ApplicationServlet.init(ApplicationServlet.java:60)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

note
The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs.

I am using (all 64-bit):

  • Windows 7 Home Premium
  • Java 6 update 31
  • Tomcat 7.0.26
  • Eclipse Indigo SR2

I am trying to use Vaadin 7 Alpha1, but the same thing happens with Vaadin 6.7.6 (with appropriate changes from Root to Application).

I have exported a ROOT.war from Eclipse, and deployed it on Tomcat separately from Eclipse and the same thing happens.

I can confirm that the following file exists: “Tomcat 7.0”\webapps\ROOT\WEB-INF\classes\com\example\testing\TestingRoot.class

I have spent the best part of three days going through and rechecking everything, ending with me formatting and reinstalling my computer as Vaadin 6 used to work (this is why I have tried 6.7.6). I have created a new ‘Vaadin Project’ in Eclipse, with only the TestingRoot.java (with the “Hello Vaadin User” Label) and web.xml to limit where the error could be.

I feel I must be overlooking something obvious. Any help will be greatly appreciated.
12226.txt (4.26 KB)
12227.java (408 Bytes)
12228.xml (1.22 KB)

My apologies.

I had placed the Vaadin jar in the Tomcat\lib folder, but if I move this to the WebContent\WEB-INF\lib folder it works.

I just did a quick search, and found that this has been identified previously, but did not come up in my previous searches.