Tomcat、WAR和多个操作系统



我正在Windows机器上创建一个WAR(TomcatHeartbeat.war),并将其本地部署到Tomcat(v7.0.19)。它部署并运行时没有任何错误。

然后,我使用相同的WAR并将其复制("部署")到一个CentOS Linux服务器上,运行相同版本的Tomcat(显然是针对Linux的!),并立即得到以下错误:

2012-02-08 10:36:23,110 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] INFO  org.apache.catalina.startup.HostConfig- Deploying web application archive TomcatHeartbeat.war
2012-02-08 10:36:23,117 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] ERROR org.apache.catalina.startup.ContextConfig- Exception fixing docBase for context [/TomcatHeartbeat]
java.util.zip.ZipException: invalid END header (bad central directory offset)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:127)
    ...(rest of stack trace ommitted for brevity)

我怀疑这是"Windows/Linux"的东西?还有什么可以解释WAR在我的机器上运行得很好,但在我们的Linux服务器上运行得不好?

我还怀疑补救措施将是建立;在同一台机器上部署WAR。

我是在跑道上,还是离基地很远?提前感谢!

编辑
我用来将WAR从Windows复制到Linux的方法是:

  • 将文件从本地磁盘复制到网络目录,该目录实际上位于Linux机器上,但我可以通过Windows资源管理器访问它
  • 将WAR从该Linux机器FTP到应用程序服务器(两台Linux机器都是相同版本的CentOS)

您肯定在FTP中使用BIN模式吗?默认值是ASCII,这可能会对.ZIP(当然,也可能是.WAR)造成严重破坏,并可能引入损坏问题。我会先看看这个。

命令行FTP操作尤其可能出现这种情况;我相信UI,当然是在Windows上,可以很好地屏蔽它。

相关内容