【问题标题】:can't deploying War file : error in opening zip file无法部署 War 文件:打开 zip 文件时出错
【发布时间】:2016-04-23 18:37:03
【问题描述】:

我正在开发一个基于 java 的 Web 应用程序,该应用程序可以使用 Jetty 在本地正确运行,但我无法使用 Tomcat 在 linux 服务器上部署 War 版本。我进入 Catalina.out 文件:打开 zip 文件时出错。

我阅读了很多关于此错误的主题(权限、损坏的 jar 文件......)但没有一个能帮助我。如何找到有关此错误的更多解释或详细信息?

这是堆栈跟踪:

18-Jan-2016 10:39:01.036 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1663 ms
18-Jan-2016 10:39:01.109 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
18-Jan-2016 10:39:01.109 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.30
18-Jan-2016 10:39:01.168 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /opt/tomcat/webapps/UserInterface-1.0-SNAPSHOT.war
18-Jan-2016 10:39:02.235 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/UserInterface-1.0-SNAPSHOT]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1795)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@6da9455d]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4928)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5058)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@6e366f32]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:699)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 13 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file
    at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:96)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 16 more
Caused by: 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:219)
    at java.util.zip.ZipFile.<init>(ZipFile.java:149)
    at java.util.jar.JarFile.<init>(JarFile.java:166)
    at java.util.jar.JarFile.<init>(JarFile.java:103)
    at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:88)
    ... 17 more

谢谢,

【问题讨论】:

  • 这里有两个问题: 1. 你如何建立你的战争? 2.你把war文件放在tomcat目录的什么地方?
  • 你能用手解开你的战争吗?
  • 我使用 intellij 中的人工制品构建我的战争,并将我的战争文件放在 /opt/tomcat/webapps
  • 是的,我可以用 7zip 解开我的战争

标签: java tomcat web-applications deployment war


【解决方案1】:

此问题的可能原因是:
1.您的应用程序/WEB-INF/lib 可能包含重复的jar
2.应用程序或应用程序/WEB-INF/lib权限不当

【讨论】:

    【解决方案2】:

    这个问题主要是因为您的部署战争文件中的 JARS 损坏。

    unzip <artifact-name>.war 
    find <artifact-folder>  -name "*jar" | xargs -L 1 zip -T | grep error | grep invalid
    

    这会在控制台中列出损坏的 JARS。

    找到损坏的 JARS 后,手动替换 lib 文件夹中的 JARS 或创建新的构建并部署它。

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题。 “引起:java.util.zip.ZipException:打开zip文件时出错”,我删除了.m2/repository文件夹,重新生成war,然后修复。

      【讨论】:

        【解决方案4】:

        我也遇到了同样的问题。这是因为 jar 损坏了。

        解决方案:删除损坏的jar并从正确的jar中再次替换它。创建新的WAR文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-13
          • 2011-07-26
          • 2013-06-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多