項目部署到服務器tomcat啓動時報如下錯誤:
2015-5-7 14:38:25 org.apache.catalina.core.StandardContext startInternal
嚴重: Error listenerStart
2015-5-7 14:38:25 org.apache.catalina.core.StandardContext startInternal
嚴重: Context [] startup failed due to previous errors
2015-5-7 14:38:25 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory /data/apache-tomcat-7.0.57/webapps/ROOT has finished in 5,2
88 ms2015-5-7 14:38:25 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]
2015-5-7 14:38:25 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8048"]
2015-5-7 14:38:25 org.apache.catalina.startup.Catalina start
網上的建議一般集中於以下幾點:
- web.xml文件 web應用部署描述符,裏面的部署的xml文件或者類,如果這些找不到就會發生startup failed due to previous errors錯誤。
- 如果在應用spring的話,在配置文件applicationContext.xml中定義的類、xml文件找不到也會報這個錯誤。
- 在web.xml,struts.xml,applicationContext.xml文件中自身有任何一點錯誤都可能引起上面的這個問題,而不僅僅是附帶的文件錯誤導致。
- 如果使用ibatis的話,在SqlMapConfig.xml中定義的xml文件找不到也會報這個錯誤。(hibernate的配置在整合spring的時候使用spring的配置文件)
- JDK的版本問題,最好使用JDK5.0 或者更高的版本。
- Eclipse和tomcat的版本兼容問題
- 框架整合的過程中在導入到lib下的jar包衝突也可能產生該錯誤。
- jar包的缺少以及jar包的版本也可產生該錯誤。
- 其他的原因
我的問題描述及最後的解決方式
本機上的jdk版本使用的是1.7,通過myeclipse編譯版本也是1.7,服務器上的jdk版本是1.6.
項目中有一些類使用的是1.7的特性,比如switch(String)。而這幾個類是在tomcat啓動spring時需要加載的。
所以更換了服務器上的jdk版本,使編譯版本和運行時版本一致,問題解決。
若還不能解決問題,修改一下tomcat的日誌級別,打印更多信息來確定問題的原因。