tomcat 启动项目时出现 ZipException: error in opening zip file

错误情况

项目用 maven 打好 war 包后放到 tomcat 下,启动 tomcat,出现以下错误

3-Nov-2017 12:21:44.346 严重 [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[/VatuuPayMap]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:988)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1860)
    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@3299c4df]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4860)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4995)
    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@90b990]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:113)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:724)
    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.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    ... 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.(ZipFile.java:220)
    at java.util.zip.ZipFile.(ZipFile.java:150)
    at java.util.jar.JarFile.(JarFile.java:166)
    at java.util.jar.JarFile.(JarFile.java:103)
    at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:110)
    ... 17 more

最后一个 Caused by 就是 java.util.zip.ZipException: error in opening zip file
但是它又不告诉我是哪个包出现了错误。

思路历程

  1. 首先检查有没有 zip 包
  2. 没有 zip 包,那剩下的只能是 jar 包。
  3. 在网上搜了一阵后,发现很多情况是在 maven 打包是就出现了这个错误,就能找到是哪个包,之后就好解决了。
  4. 但是我每次都是没有错误,成功打包
  5. 之后花式打包,调各种参数,都失败了
  6. 在这样的情况下,只能调试 tomcat 了(我想到的本办法,如果有更好的办法请告述我!!!)
  7. 之后就是调试 tomcat 源码了,详情请点击。
  8. tomcat 源码 org.apache.catalina.util.LifecycleBase.init 这个位置打断点,终于发现是哪个 jar 包了。

    PS

    其实这个 jar 包会出问题是因为它是一个本地 jar 包,按照网上推荐的方式将它 install 到本地仓库,ide 上运行是没错的,但是打包之后就是一个空包了,但是显示的大小比正常的大。
    暂时的解决方法 详情点击
    如果有知道原因和其他方法的请告诉我!!!

你可能感兴趣的:(maven,tomcat)