最近在用idea部署war文件的时候,总是出现了部署失败的错误,刚开始并没有在意,但是现在次数越来越多了,不得不在意了,然后就在百度上搜,然后就有了各种说法
1,错误的信息是:
1 |
One or more listeners failed to start. Full details will be found in the appropriate container log file |
根据错误信息,说是一个listener加载失败了,失败原因请看容器log文件,我的idea配置的tomcat是自己的本地的tomcat,然后进本地的目录一瞅,木有,那么这个日志放在哪里了?然后就开始找这个日志文件在哪里。开始百度。。。
经历过种种百度,然后最后得出的结果是在这里
1 |
C:\Users\Administrator\.IntelliJIdea14\system\tomcat\未命名_zngkpt\logs |
好了,第一步完成,找到了日志文件,那么日志文件里面的错误信息是什么呢?首先,有下面几个日志信息
根据时间来看,那就看catalina和localhost这两个吧,最后在locaohost的log文件里找到了这样的一句话:
1 2 3 |
三月 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里可以百度。
解决问题的过程是令人痛苦的,解决后感觉原来是这样啊。