最近自己搭建了一個spring的項目,使用Maven做項目構建,使用JDK8,為了方便啟動就使用jetty作為啟動容器,但是卻無意間步入了一個坑
[WARNING] Failed startup of context o.e.j.m.p.JettyWebAppContext@fa5769{/,file:///D:/springdemo/spring-service-impl/src/main/webapp/,UNAVAILABLE}{file:///D:/springdemo/spring-service-impl/src/main/webapp/} org.eclipse.jetty.util.MultiException: Multiple exceptions at org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations (AnnotationConfiguration.java:451) at org.eclipse.jetty.annotations.AnnotationConfiguration.configure (AnnotationConfiguration.java:364) at org.eclipse.jetty.webapp.WebAppContext.configure (WebAppContext.java:517) at org.eclipse.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1458) at org.eclipse.jetty.server.handler.ContextHandler.doStart (ContextHandler.java:785) at org.eclipse.jetty.servlet.ServletContextHandler.doStart (ServletContextHandler.java:261) at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:545) at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart (JettyWebAppContext.java:432) at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) at org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifeCycle.java:131) at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart (ContainerLifeCycle.java:113) at org.eclipse.jetty.server.handler.AbstractHandler.doStart (AbstractHandler.java:113) at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart (ContextHandlerCollection.java:167) at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) at org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifeCycle.java:131) at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart (ContainerLifeCycle.java:113) at org.eclipse.jetty.server.handler.AbstractHandler.doStart (AbstractHandler.java:113) at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) at org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifeCycle.java:131) at org.eclipse.jetty.server.Server.start (Server.java:452)
項目啟動期間報了一個錯,網上搜集了好多相關信息,但是都沒有解決我的問題,下面是我的jetty插件
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.5.v20170502</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <httpConnector> <port>8080</port> </httpConnector> <webApp> <contextPath>/</contextPath> </webApp> </configuration> </plugin>
我搜集了網上相關的錯誤信息以及解決方案,但幫助都不大。
第一 https://blog.csdn.net/whymm/article/details/80030567 resources為編譯到輸出目錄
第二 可能是倉庫中有的jar包下載不完整導致的,可以排查下自己倉庫包是否是完整下載的,有時網絡問題可能會導致這個問題
第三 https://blog.csdn.net/CSDN_Terence/article/details/76976362?locationNum=8&fps=1 Jetty-servier的版本與jetty-webapp的版本不兼容導致的,將兩者的版本號修改一下就好了
然而上面的都沒有解決我的問題,大家也可以試一下上面的方法排查一下,也許有相似的地方,我搭建空項目jetty啟動是可以的,那么會不會是包依賴導致的呢?我開始嘗試着把可能影響的maven依賴挨個注釋去排查,后來發現是一個dubbo依賴包導致的,我的使用dubbo包,無意中引入了springboot和dubbo集成包,注釋掉之后,項目可以完美啟動。這個包下面又有多個依賴,具體是哪個以來導致的呢?我經過精准定位,最后定位一個包,下面這個包就是罪魁禍首
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-to-slf4j</artifactId> <version>2.10.0</version> </dependency>
可能大家的錯誤不是這個包導致的,不過大家一定要注意控制台打印的日志,看一下有沒有顯示那個jar或者class類導致的,然后找到這個包含這個類的依賴排除掉再試一下。至於這個包為什么會導致這個問題,歡迎大家一起來探討,希望我的回答能對大家有幫助。