title: trouble deploying .WAR to tomcat
body: <p>im having trouble deploying a war file on tomcat.</p>
  
  <p>i have written a webapp in netbeans on my windows machine. it all runs fine. what i want to do is deploy the application on my linux computer that is acting as my server. once the application is built, i copy the war file from the dist folder in my project directory onto a pendrive. i then copy this onto the desktop of my linux computer.</p>
  
  <p>i then start tomcat and using the application manager i browse the war file to deploy, then click deploy. i get a message at the top of the browser saying 'OK'. yet if i look at my tomcat output in the terminal window i have the following error:</p>
  
  <pre><code>4/01/2011 5:09:07 PM org.apache.catalina.startup.HostConfig deployWAR
  INFO: Deploying web application archive Kingdoms.war
  4/01/2011 5:09:07 PM org.apache.catalina.startup.ContextConfig init
  SEVERE: Exception fixing docBase for context [/Kingdoms] 
  java.util.zip.ZipException: invalid CEN header (bad signature)
      at java.util.zip.ZipFile.open(Native Method)
      at java.util.zip.ZipFile.&lt;init&gt;(ZipFile.java:114)
      at java.util.jar.JarFile.&lt;init&gt;(JarFile.java:135)
      at java.util.jar.JarFile.&lt;init&gt;(JarFile.java:72)
      at sun.net.www.protocol.jar.URLJarFile.&lt;init&gt;(URLJarFile.java:72)
      at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:48)
      at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
      at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
      at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:71)
      at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:111)
      at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:706)
      at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:829)
      at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:334)
      at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
      at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
      at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:328)
      at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:308)
      at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:131)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:570)
      at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:891)
      at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
      at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1322)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
      at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
      at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
      at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1467)
      at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:332)
      at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:209)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:561)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
  4/01/2011 5:09:07 PM org.apache.catalina.core.StandardContext resourcesStart
  SEVERE: Error starting static Resources
  java.lang.IllegalArgumentException: Invalid or unreadable WAR file : invalid CEN header (bad signature)
      at org.apache.naming.resources.WARDirContext.setDocBase(WARDirContext.java:142)
      at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4657)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4815)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:570)
      at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:891)
      at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
      at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1322)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
      at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
      at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
      at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1467)
      at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:332)
      at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:209)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:561)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
  4/01/2011 5:09:07 PM org.apache.catalina.core.StandardContext startInternal
  SEVERE: Error in resourceStart()
  4/01/2011 5:09:07 PM org.apache.catalina.core.StandardContext startInternal
  SEVERE: Error getConfigured
  4/01/2011 5:09:07 PM org.apache.catalina.core.StandardContext startInternal
  SEVERE: Context [/Kingdoms] startup failed due to previous errors
  </code></pre>
  
  <p>also i can now see in the applications list, my app. i click start in the commands for the app but get a message at the top of the screen saying 'FAIL - Application at context path /Kingdoms could not be started'</p>
  
  <p>what am i doing wrong? how to fix this?</p>