麻烦部署.WAR到tomcat

即时通讯在tomcat上部署一个战争文件时遇到麻烦。

我已经在我的Windows机器上的netbeans中写了一个webapp。 这一切运行良好。 我想要做的是部署应用程序在我的Linux计算机,充当我的服务器。 一旦构build应用程序,我将战争文件从我的项目目录中的dist文件夹复制到pendrive。 然后我把它复制到我的linux电脑的桌面上。

然后我启动tomcat并使用应用程序pipe理器浏览要部署的war文件,然后单击deploy。 我在浏览器顶部收到一条消息,说'OK'。 但如果我看我的terminal窗口中的我的tomcat输出,我有以下错误:

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.<init>(ZipFile.java:114) at java.util.jar.JarFile.<init>(JarFile.java:135) at java.util.jar.JarFile.<init>(JarFile.java:72) at sun.net.www.protocol.jar.URLJarFile.<init>(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 

我现在也可以在应用程序列表中看到我的应用程序。 我点击开始在应用程序的命令,但得到一个消息在屏幕上方说'失败 – 应用程序的上下文path/王国不能开始'

我究竟做错了什么? 如何解决这个问题?

Solutions Collecting From Web of "麻烦部署.WAR到tomcat"

战争档案是腐败或无效的。

检查战争生成过程没有失败,并且在复制到笔式驱动器之前,战争文件是有效的zip文件。

如果你在Windows上,你可以通过将文件扩展名改为.zip并使用诸如winzip或winrar之类的压缩程序来打开。

如果您在另一个操作系统上,则可能不需要更改扩展名。

如果这场战争是一个有效的zip文件,那么可能是由于你的传输过程(例如上/下笔)而损坏的。

这可能是由于以下原因之一。

  • 损坏的WAR文件
  • 损坏的WEB-INF / lib文件夹下的JAR文件

这可能是一个文件保护问题,你可以通过发出类似的命令来修复:chmod 755 webapp.war

它发生在我身上,我的sftp只会在传输的文件上打一个700,导致这个错误。

有同样的错误 – 与战争一切ok,重新启动Tomcat解决问题,所以我认为这是因为Tomcat开始部署之前,它完全上传战争

我也有同样的问题,重建/上传战争并没有解决问题。 我最终做了什么来解决这个问题,是以不同的名字上传这场战争,然后在战争成功部署之后重新命名战争。 有点奇怪,这将工作,但这是一个比我重新启动tomcat更好的解决方案。

也可能是因为solr.xml中的条目不正确它必须指向.war文件所在的位置。

还要注意已经部署的.war文件的文件权限。 对我来说,这是事业。

在我的情况下,这是清单文件。

 Class-Path: 

应该跟一个空格。

首先要检查的是您的磁盘上是否有可用空间。 如果您的分区已满100%,则无法提取.WAR文件。