Tomcat,WARs和多个操作系统

时间:2012-02-08 16:02:58

标签: java windows linux 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服务器上却没有?

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

我是在赛道上,还是离开基地?提前谢谢!

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

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

1 个答案:

答案 0 :(得分:5)

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

这特别适用于命令行FTP操作;我相信UI,当然在Windows上,很好地掩盖了它。