項(xiàng)目是一個(gè)基于maven的web項(xiàng)目,依賴于公司的核心包硅蹦。問題是在eclipse下部署成功剑鞍,但在idea下部署失敗。報(bào)錯(cuò)如下:
2017-11-16 17:08:28 hrp_mp_scheduler [org.springframework.web.context.ContextLoader.initWebApplicationContext:353] - [ERROR] Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:config/kyee-include-all.xml]
Offending resource: class path resource [applicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:config/core/scheduler.xml]
Offending resource: URL [jar:file:/Users/huangpeng/workspace/tomcat/apache-tomcat-8.0.43/webapps/hrp_mp_scheduler/WEB-INF/lib/kyee_nextframework_core-1.0.70.jar!/config/kyee-include-all.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.
Offending resource: class path resource [config/core/scheduler.xml]
調(diào)查發(fā)現(xiàn)把項(xiàng)目部署在eclipse中時(shí)铐然,lib目錄下的jar包是正常的蔬崩;部署到idea中以后,tomcat目錄下webapps搀暑,進(jìn)入到項(xiàng)目目錄中沥阳,發(fā)現(xiàn)lib目錄下有兩個(gè)核心包,一個(gè)老版本自点,一個(gè)新版本桐罕。
于是到idea中查看了target目錄下,是有兩個(gè)核心包的桂敛,核心包被加載了兩次功炮,當(dāng)然沖突了。下圖是target目錄:
所以就手動刪除了老版本的核心包埠啃,重啟以后項(xiàng)目就跑起來了死宣。
沖突的jar包會顯示成這樣,一個(gè)是灰色的表示正常碴开,另一個(gè)是黑色的應(yīng)該的沒什么用毅该,但是卻被錯(cuò)誤的引入了進(jìn)來博秫,導(dǎo)致了項(xiàng)目無法啟動,所以要將黑色的包刪掉眶掌。
后記:
剛開始看日志報(bào)錯(cuò)一直以為是配置錯(cuò)誤挡育,還在jar包里看配置文件看是否哪里重復(fù)了,最后還是耐心看日志朴爬,發(fā)現(xiàn)在報(bào)錯(cuò)前已經(jīng)加載了一遍配置文件即寒,而且日志上寫的很清楚,第一次加載的是老版本核心包的配置文件召噩,然后加載新版本的配置文件就報(bào)錯(cuò)了母赵。
所以排查問題時(shí)不能只看報(bào)錯(cuò)的那一行,要聯(lián)系上下文具滴,前后都得看一看凹嘲。