[总结]Struts+Spring+Hibernate工程在tomcat下无法启动原因查找
这两天新接手一个Struts+Spring+Hibernate的工程,很久没有用过Struts了,所以重新拾起来做的时候还真是有点不习惯。工程交接给我的时候,对方说并没有什么问题,但是实际在我本地的机器上运行的时候还是问题多多。其中不少问题着实费了我不少时间,故总结如下:
1、最初服务器无法启动的时候,服务器日志中报出的是:“Error listenerStart”的错误。之所以出现此错误是因为在web.xml中有如下配置
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>此时,比较好的查错方法之一就是查看tomcat的日志信息。
log4j.logger.org.springframework=debug修改完成之后重新启动tomcat,此时就出现了更详细的错误信息
log4j.logger.org.apache.struts2=debug重新启动服务器之后,仍旧没有进一步的错误信息,无奈,只好将上面语句修改为
log4j.logger.org.apache=debug再次重新启动服务器,由于上面的修改会大幅度增加日志信息的量,故会有很多的冗余信息,可以略过,在最后面我看到了更详细的报错信息:
2010-04-16 15:40:58 - Dispatcher:27 - ERROR - Dispatcher initialization failedUnable to load bean: type:com.opensymphony.xwork2.util.ValueStackFactory class:com.opensymphony.xwork2.ognl.OgnlValueStackFactory - bean - jar:file:/E:/workspace/BOSS_OS_NAV/WebContent/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:70:140出现这种错误也有几种情况:
2010-04-16 15:54:09 - [/BOSS_OS_NAV]:3604 - ERROR - Exception starting filter struts2java.lang.RuntimeException: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.autoWire.alwaysRespect'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext,java.lang.String,com.opensymphony.xwork2.inject.Container).出现这种错误的几种情况如下: