java.lang.IllegalArgumentException:无效或不可读的WAR文件:打开zip文件时出错

java.lang.IllegalArgumentException:无效或不可读的WAR文件:打开zip文件时出错,java,jsp,tomcat,catalina.out,Java,Jsp,Tomcat,Catalina.out,在Tomcat上执行display.war文件时,我在Catalina.2011-03-30.log中遇到了这个错误。错误如下所示: Mar 30, 2011 8:01:31 PM org.apache.catalina.startup.ContextConfig init SEVERE: Exception fixing docBase for context [/Display] java.util.zip.ZipException: error in opening zip fi


在Tomcat上执行display.war文件时,我在Catalina.2011-03-30.log中遇到了这个错误。错误如下所示:

Mar 30, 2011 8:01:31 PM org.apache.catalina.startup.ContextConfig init  
SEVERE: Exception fixing docBase for context [/Display]   
java.util.zip.ZipException: error in opening zip file  

    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:148)
    at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:886)
    at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:1021)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:279)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.StandardContext.init(StandardContext.java:5602)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4378)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:662)  

Mar 30, 2011 8:01:31 PM org.apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources  

java.lang.IllegalArgumentException: Invalid or unreadable WAR file : error in opening zip file  
    at org.apache.naming.resources.WARDirContext.setDocBase(WARDirContext.java:135)  
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4249)  
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4418)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:662)  
2011年3月30日8:01:31 PM org.apache.catalina.startup.ContextConfig init
严重:修复上下文[/Display]的docBase时出现异常
java.util.zip.ZipException:打开zip文件时出错
位于java.util.zip.ZipFile.open(本机方法)
位于java.util.zip.ZipFile。(ZipFile.java:114)
位于java.util.jar.JarFile。(JarFile.java:135)
位于java.util.jar.JarFile。(JarFile.java:72)
位于sun.net.www.protocol.jar.URLJarFile.(URLJarFile.java:72)
位于sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:48)
位于sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
位于sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
位于sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:71)
位于org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:148)
位于org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:886)
位于org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:1021)
位于org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:279)
在org.apache.catalina.util.LifecycleSupport.FireLifecycleSupport(LifecycleSupport.java:119)上
位于org.apache.catalina.core.StandardContext.init(StandardContext.java:5602)
位于org.apache.catalina.core.StandardContext.start(StandardContext.java:4378)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
位于org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
位于org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
位于org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
位于org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
位于org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
在org.apache.catalina.util.LifecycleSupport.FireLifecycleSupport(LifecycleSupport.java:119)上
位于org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
运行(Thread.java:662)
2011年3月30日晚上8:01:31 org.apache.catalina.core.StandardContext资源启动
严重:启动静态资源时出错
java.lang.IllegalArgumentException:无效或不可读的WAR文件:打开zip文件时出错
位于org.apache.naming.resources.WARDirContext.setDocBase(WARDirContext.java:135)
位于org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4249)
位于org.apache.catalina.core.StandardContext.start(StandardContext.java:4418)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
位于org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
位于org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
位于org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
位于org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
位于org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
在org.apache.catalina.util.LifecycleSupport.FireLifecycleSupport(LifecycleSupport.java:119)上
位于org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
运行(Thread.java:662)

提前感谢。

原因清楚地显示出来:

java.lang.IllegalArgumentException: Invalid or unreadable WAR file : error in opening zip file  
WAR
(Web存档)文件是一个zip文件,其中包含用于Web应用程序的类、库和资源

将WAR文件从
a.WAR
重命名为
a.zip
。如果无法使用Winzip/7-zip/WinRar打开zip文件,请再次重建WAR文件


希望这能有所帮助。

不幸的是,原因和解决方案并不那么明显。我以前在几个论坛上见过这个问题好几次。我自己也经历过至少一次。谷歌目前对该异常消息的点击率超过500次。所有问题都没有答案。然而,有迹象表明它可以在IDEX中工作,但不能在IDEY上工作,也可以在服务器X上工作,但不能在服务器Y上工作。或者,从WAR中删除或添加某些内容是有效的(可以找到一个典型的示例)。然而,没有人深入解释真正的根本原因

我认为这与所使用的JDK/JRE版本和WAR的文件大小有关。以下是一些您可以尝试的东西:

  • 尝试在IDE和/或appserver环境中更新/调整JDK/JRE版本
  • 尝试向WAR中添加一些东西,一些随机的JAR或JSP文件或其他任何东西,然后重新构建

    • 这里也有同样的问题。war文件可以通过7-zip打开

      编辑:我找到了原因。“无效或不可读的WAR文件:打开zip文件时出错”无疑是一条令人困惑的错误消息。真正的原因仅仅是“Tomcat无法部署战争”
      useradd -d /opt/solr -s /sbin/false solr