1. 程式人生 > >tomcat 啟動專案時出現 ZipException: error in opening zip file

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.<init>(ZipFile.java:220) at java.util.zip.ZipFile.<init>(ZipFile.java:150) at java.util.jar.JarFile.<init>(JarFile.java:166) at java.util.jar.JarFile.<init>(JarFile.java:103) at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:110) ... 17 more
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

最後一個 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 上執行是沒錯的,但是打包之後就是一個空包了,但是顯示的大小比正常的大。
    暫時的解決方法 詳情點選
    如果有知道原因和其他方法的請告訴我!!!