使用eclipse建立maven項目後,在pom.xml文件中添加依賴。若依賴包沒有下載,eclipse會自行下載到maven的本地倉庫。寫完代碼後進行編譯運行,發現tomcat服務器啓動不了。java
控制檯打印的錯誤主要有:web
嚴重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-upload]]
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)spring
先開始我覺得錯誤信息就是 A child container failed during start 或者 Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-upload]],經過百度並不能找到有用的解決方案。這個問題困擾了我很久,後來才發現錯誤信息基本都是org.apache.catalina報的錯,只有一兩處不同。apache
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:142)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
… 12 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(Unknown Source)
at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(Unknown Source)
at java.util.zip.InflaterInputStream.read(Unknown Source)
at sun.misc.IOUtils.readFully(Unknown Source)
at java.util.jar.JarFile.getBytes(Unknown Source)
at java.util.jar.JarFile.getManifestFromReference(Unknown Source)
at java.util.jar.JarFile.getManifest(Unknown Source)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:140)
… 13 more
即錯誤信息主要就是invalid LOC header,經過上網查詢才發現pom.xml文件中的依賴包有的沒有下載徹底,致使出錯。tomcat
那麼右鍵點擊項目名 --> run as --> maven test,在控制檯便可報出爲下載徹底的jar包。服務器
若是沒有報錯,那就使用笨方法,在倉庫裏一個一個找引入的依賴包,看看哪一個沒有下載徹底。eclipse
發現commons-logging包裏面多了一個文件 aether-3bf50b8e-634b-4a1c-b0cb-9c4f64a0d6a1-commons-logging-1.1.1.jar.sha1-in-progress,表示此包沒有下載完畢。maven
解決方法就是將此文件所在的包所有刪除,而後從新下載。在pom.xml文件中找到此包的依賴。component
全選,而後右鍵點擊,選擇 run as --> maven install 便可從新下載。xml
最後從新啓動服務器,tomcat能正常運行。