Tomcat Deploy HTTP 500 Exception

I wanted to deploy my application on a tomcatserver a a customers server.
(On my eclipse the “Run on Server (Tomcat7)” works like charm.

  • I exported the WAR from eclipse ( rightclick-> Export ->WAR)
  • I put the WAR File into my webapps directory in my XAMPP->Tomcat Folder.
    → The WAR seems to be deploeyd correctly

But when I’m calling the URL in my Browser I got this Exception

HTTP Status 500 - com.vaadin.server.ServiceException: java.lang.NoClassDefFoundError: org/jvnet/jaxb2_commons/lang/CopyTo

type Exception report

message com.vaadin.server.ServiceException: java.lang.NoClassDefFoundError: org/jvnet/jaxb2_commons/lang/CopyTo

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

exceptionjavax.servlet.ServletException: com.vaadin.server.ServiceException: java.lang.NoClassDefFoundError: org/jvnet/jaxb2_commons/lang/CopyTo com.vaadin.server.VaadinServlet.service(VaadinServlet.java:240) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)root causecom.vaadin.server.ServiceException: java.lang.NoClassDefFoundError: org/jvnet/jaxb2_commons/lang/CopyTo com.vaadin.server.VaadinService.handleExceptionDuringRequest(VaadinService.java:1429) com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1383) com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)root causejava.lang.NoClassDefFoundError: org/jvnet/jaxb2_commons/lang/CopyTo java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(ClassLoader.java:792) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) com.example.callcenterdialog.controller.controller_main.<init>(controller_main.java:35) com.example.callcenterdialog.Callcenterdialog.<init>(Callcenterdialog.java:27) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:526) java.lang.Class.newInstance(Class.java:374) com.vaadin.server.UIProvider.createInstance(UIProvider.java:36) com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:200) com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:73) com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37) com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371) com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

Can you please help here ?
What is my problem`or what am I doing wrong?

Best regards

Christian Schlagkamp

After changing a copy of the project with rightclick to a maven project i got this exception also http500

HTTP Status 500 -

type Exception report

message

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

exceptionjavax.servlet.ServletException: Error instantiating servlet class com.example.callcenterdialog.Callcenterdialog$Servlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)root causejava.lang.NoClassDefFoundError: com/vaadin/server/VaadinServlet java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(Unknown Source) java.security.SecureClassLoader.defineClass(Unknown Source) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)

Check that the WAR actually contains the classes mentioned in the NoClassDefFoundException - if not, check Project Properties → Deployment Assembly. The second message might indicate that the Vaadin JARs themselves might be missing from the WAR assuming there is no typo in the full class name of the servlet class.

Another potential problem could be if there are conflicting versions of some library in the Tomcat shared library directory, or for instance Vaadin JAR there. Those are loaded with a different classloader that does not have full access to the WebAppClassLoader used for the JAR, so if they try to load a class from the WAR dynamically, it is not found. If this is the case, please provide some more details about your setup and which potentially problematic libraries can be in our webapp directory.

Hay Henri, after a talk with Marc Englund yesterday,

I build up a new Vaadin7 Project and imported all of my self written classes.
Now the Error says:

java.lang.ClassNotFoundException: com.vaadin.server.VaadinServlet org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(Unknown Source) java.security.SecureClassLoader.defineClass(Unknown Source) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)

Is it possible that there exists a prolem when I am using API-Libs from a company?

EDIT: Same Error exists with an Empty Vaadin7 Project.
→ New Vaadin7 Project → Resolved libs with Ivy → Error

I use a TOmcat 7.0.12 with JRE7

This is the errormessage occuring in eclipse when launching on server:

Nov 30, 2013 12:41:10 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;D:\Software\CodeGear\RAD Studio\6.0\bin;C:\Users\Public\Documents\RAD Studio\6.0\Bpl;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Sybase\SQL Anywhere 9\Win32;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\SQL Anywhere 12\Bin32\;D:\Programme\GNU\GnuPG\pub;C:\Program Files (x86)\GNU\GnuPG\pub;D:\Programme\TortoiseSVN\bin;D:\Programme\MySQL\MySQL Utilities 1.3.4\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\Public\Documents\RAD Studio\6.0\Bpl;;D:\Software\Saxonica\SaxonHE9.4N\bin;.
Nov 30, 2013 12:41:10 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]
{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:EmptyVaadinTest' did not find a matching property.
Nov 30, 2013 12:41:10 PM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]

Nov 30, 2013 12:41:10 PM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]

Nov 30, 2013 12:41:10 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 850 ms
Nov 30, 2013 12:41:10 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Nov 30, 2013 12:41:10 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
Nov 30, 2013 12:41:10 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]

Nov 30, 2013 12:41:10 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]

Nov 30, 2013 12:41:10 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 500 ms
Nov 30, 2013 12:41:12 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet com.example.emptyvaadintest.EmptyvaadintestUI$Servlet as unavailable
Nov 30, 2013 12:41:12 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet com.example.emptyvaadintest.EmptyvaadintestUI$Servlet
java.lang.ClassNotFoundException: com.vaadin.server.VaadinServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:813)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

There is definitely some error in your environment if even this does not work. You could try some of the following (one step at a time to try to identify where the problem really was):

  • Check that you are using the latest version of the Vaadin plug-in for Eclipse
  • Clear your IVY cache (on disk, typically under the directory .ivy in your home directory) in case something there is corrupted
  • Try with a clean installation of Tomcat (without any extra libraries installed directly in Tomcat etc. - just extract the Tomcat distribution ZIP to a new directory on your disk and give that directory to Eclipse)
  • Try with a clean installation of Eclipse (if all else fails - just extract e.g. the Kepler Eclipse JEE package ZIP, install the Vaadin plug-in and create a new Vaadin project with it)

Don’t try with your project classes before you get an empty Vaadin project running just after creating it as that would only make finding the real cause harder, and probably things will start to work also for your project once the underlying problem is resolved.

→ Clearing the cache doesn’t help in my case
→ Resolving all libs with IVY after clearing doesn’t help
→ deleting all Servers within Eclipse and creating one new doesn’t help

I will now reinstall my eclipse and than I will tell you if an empty project works…

After reinstalling & reconfiguring my eclipse and my tomcat the emptyvaadin example project works like a charm.
When I now start my old project I am back at this error:

Dez 02, 2013 10:44:19 AM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE:
java.lang.NoClassDefFoundError: org/jvnet/jaxb2_commons/lang/CopyTo
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2918)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at com.breos.callcenter_dialog.controller.controller_main.<init>(controller_main.java:34)
    at com.breos.callcenter_dialog.CallCenterDialog.<init>(CallCenterDialog.java:25)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at com.vaadin.server.UIProvider.createInstance(UIProvider.java:36)
    at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:200)
    at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:73)
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.jvnet.jaxb2_commons.lang.CopyTo
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 40 more

Problem SOLVED!

I added my API libs to a userlibary and had to add it into the Deployment Assembly.

So:

  1. Properties → Java Build Path → Libaries → Add Libary → User Libary → User Libary… → New (Add all Jars here)
    → Select this lib to add it to the buildpath

  2. Properties → Deployment Assembly → Add → Java Build Path Entries → Add (Add your libary here.

NOW it works like a charm.

Instead if creating a User Library, you could also do the following:

1 - Properties → Java Build Path → Libraries → Add Library → IvyDE Managed Dependencies → add your ivy.xml
2 - Properties → Deployment Assembly → Add → Java Build Path Entries → Add → select your ivy.xml