最近在用idea部署war文件的時候,總是出現了部署失敗的錯誤,剛開始並沒有在意,但是現在次數越來越多了,不得不在意了,然后就在百度上搜,然后就有了各種說法
1,錯誤的信息是:
One or more listeners failed to start. Full details will be found in the appropriate container log file
根據錯誤信息,說是一個listener加載失敗了,失敗原因請看容器log文件,我的idea配置的tomcat是自己的本地的tomcat,然后進本地的目錄一瞅,木有,那么這個日志放在哪里了?然后就開始找這個日志文件在哪里。開始百度。。。
經歷過種種百度,然后最后得出的結果是在這里
C:\Users\Administrator\.IntelliJIdea14\system\tomcat\未命名_zngkpt\logs
好了,第一步完成,找到了日志文件,那么日志文件里面的錯誤信息是什么呢?首先,有下面幾個日志信息
根據時間來看,那就看catalina和localhost這兩個吧,最后在locaohost的log文件里找到了這樣的一句話:
三月 02, 2017 1:18:40 下午 org.apache.catalina.core.StandardContext listenerStart 嚴重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
意思就是說contextloaderlistener這個class沒有加載成功,說是配置的問題,然后繼續百度,有一下幾種情況
1,listener的配置要放在servlet前面,我看我的配置文件,的確是這樣的,
2,就是tomcat緩存問題,把project的tomcat去掉后重新部署上去,我試了試,不行
3,說是沒有spring的包,我想着一會好,一會不好的,如果真的是spring包的話,那應該就一直不好,所以排除了,(結果這里出現問題了)
4,重新安裝tomcat,這個方法我沒有試,不知道效果如何
突然,在論壇里看有人說看看你的tomcat服務器里的項目的web-info\lib下有沒有這個包,然后我一查,果然沒有spring的包。好的,這里問題算是找到了。就是因為這個沒有包才導致的。
這個就提醒我了,不管項目上是不是加載了依賴包,如果部署到服務器上沒有依賴的那個包,那就是白搭,肯定會出問題的。
最終我的web-inf\lib里面的目錄結果如下
然后開啟debug,成功。
上面五種方法起個參考作用,主要是第五種,用事實來說話。我的項目是idea分模塊的,具體的怎樣加到Lib里可以百度。
解決問題的過程是令人痛苦的,解決后感覺原來是這樣啊。