Tomcat啓動堆棧異常

近日部署項目到Tomcat,訪問一直404。java

因而查看 catalina.out 日誌信息,發現以下信息web

30-Jun-2019 16:38:03.642 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
30-Jun-2019 16:38:03.646 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [/XXX] startup failed due to previous errors

其實仍是沒有看明白緣由,只知道項目啓動失敗spring

再次查看 localhost.2019-06-30.log 發現以下循環輸出的異常信息:apache

30-Jun-2019 16:13:56.351 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
	java.lang.StackOverflowError
		at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:39)
		at org.apache.log4j.LogManager.getLogger(LogManager.java:45)
		at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:66)
		at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
		at org.apache.log4j.Category.<init>(Category.java:57)
		at org.apache.log4j.Logger.<init>(Logger.java:37)
		at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:43)
		at org.apache.log4j.LogManager.getLogger(LogManager.java:45)
		at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:66)
		at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
		at org.apache.log4j.Category.<init>(Category.java:57)
		at org.apache.log4j.Logger.<init>(Logger.java:37)

 

推測是jar包衝突:log4j-over-slf4j.jar 和 slf4j-log4j12.jar 瀏覽器

果真在 WEB-INF\lib 裏面找到這兩個傢伙,因而先刪除log4j-over-slf4j.jar,在重啓tomcat,經過瀏覽器可以正常訪問。tomcat

咱們的是maven項目,用的Idea。app

打開pom.xml文件maven

右鍵 -> Maven -> Show Dependencies日誌

而後打開依賴的圖, 看到依賴關係以後,xml

ctrl+f 在彈出框Diagram Elements 找到 log4j-over-slf4j 點進去:

右鍵 -> Exclude 便可。

最終在pom.xml文件裏自動生成排除咱們在界面exclude的依賴。

從新打包項目,發佈war包到tomcat,能正常啓動,訪問。

問題解決。

相關文章
相關標籤/搜索