天天看點

eclipse運作maven項目,tomcat啟動報錯

使用eclipse建立maven項目後,在pom.xml檔案中添加依賴。若依賴包沒有下載下傳,eclipse會自行下載下傳到maven的本地倉庫。寫完代碼後進行編譯運作,發現tomcat伺服器啟動不了。

eclipse運作maven項目,tomcat啟動報錯

控制台列印的錯誤主要有:

嚴重: 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)

先開始我以為錯誤資訊就是 A child container failed during start 或者 Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-upload]],通過百度并不能找到有用的解決方案。這個問題困擾了我好久,後來才發現錯誤資訊基本都是org.apache.catalina報的錯,隻有一兩處不一樣。

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檔案中的依賴包有的沒有下載下傳完全,導緻出錯。

那麼右鍵點選項目名 --> run as --> maven test,在控制台即可報出為下載下傳完全的jar包。

如果沒有報錯,那就使用笨方法,在倉庫裡一個一個找引入的依賴包,看看哪個沒有下載下傳完全。

eclipse運作maven項目,tomcat啟動報錯

發現commons-logging包裡面多了一個檔案 aether-3bf50b8e-634b-4a1c-b0cb-9c4f64a0d6a1-commons-logging-1.1.1.jar.sha1-in-progress,表示此包沒有下載下傳完畢。

解決方法就是将此檔案所在的包全部删除,然後重新下載下傳。在pom.xml檔案中找到此包的依賴。

eclipse運作maven項目,tomcat啟動報錯

全選,然後右鍵點選,選擇 run as --> maven install 即可重新下載下傳。

最後重新啟動伺服器,tomcat能正常運作。

版權聲明:本文為CSDN部落客「weixin_34090562」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34090562/article/details/92398187