[总结]Struts+Spring+Hibernate工程在tomcat上无法启动原因查找
[总结]Struts+Spring+Hibernate工程在tomcat下无法启动原因查找
这两天新接手一个Struts+Spring+Hibernate的工程,很久没有用过Struts了,所以重新拾起来做的时候还真是有点不习惯。工程交接给我的时候,对方说并没有什么问题,但是实际在我本地的机器上运行的时候还是问题多多。其中不少问题着实费了我不少时间,故总结如下:
1、最初服务器无法启动的时候,服务器日志中报出的是:“Error listenerStart”的错误。之所以出现此错误是因为在web.xml中有如下配置
通过tomcat查看日志信息的方法网上有很多资料,在此不再赘述。
通过查看tomcat日志可以解决相当大一部分问题
2、我的工程通过tomcat日志仍旧无法查出问题所在,仍旧只有Error listenerStart错误,而没有进一步的错误信息。这时候我把log4j.properties文件中加入
此种情况下一般会出现两种错误:
(1)缺少相关的jar包(经查我的工程缺少jta.jar包造成的,于是将此包放入工程之中
)
(2)和tomcat的lib中的某些包有重复,故需要把重复的包删除掉
3、重新启动tomcat之后,我的工程依旧无法启动,此时会报出“Exception starting filter struts2”的错误。但是仍旧没有进一步的错误信息。这时候我再次在log4j.properties中加入如下语句:
(1)缺少必须的包 如:commons-fileupload等
(2)struts2-core-2.1.8.1.jar包的问题
我的是属于第二种,至于原因本人现在还不甚了解,但是换成struts2-core-2.0.14.jar之后就不再报上面的错误了
4、再次重启tomcat,服务器日志中再次出现其他错误:
(1)依旧检查jar包,看是不是有多余的jar包造成了冲突
(2)struts.xml文件中有错误,比如action中的包路径,看看是否是由于出现了不应该出现的空格或者干脆就是路径不存在
(3)某些特定jar包之间的版本不一致(本人遇到的就是地但中情况,由于在上面的步骤中我修改struts2-core-2.1.8.1.jar为struts2-core-2.0.14.jar,但是这样就与另一个jar包struts2-spring-plugin-2.1.8.1.jar的版本产生了冲突,故我把此jar包的去掉,引入了相同版本的jar包)
5、再次重新启动服务器,终于OK了![[总结]Struts+Spring+Hibernate工程在tomcat上无法启动原因查找 [总结]Struts+Spring+Hibernate工程在tomcat上无法启动原因查找](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDEyLzA5LzIzLzE4MjYyODExNDM5LmdpZg==)
这两天新接手一个Struts+Spring+Hibernate的工程,很久没有用过Struts了,所以重新拾起来做的时候还真是有点不习惯。工程交接给我的时候,对方说并没有什么问题,但是实际在我本地的机器上运行的时候还是问题多多。其中不少问题着实费了我不少时间,故总结如下:
1、最初服务器无法启动的时候,服务器日志中报出的是:“Error listenerStart”的错误。之所以出现此错误是因为在web.xml中有如下配置
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>此时,比较好的查错方法之一就是查看tomcat的日志信息。
通过tomcat查看日志信息的方法网上有很多资料,在此不再赘述。
通过查看tomcat日志可以解决相当大一部分问题
2、我的工程通过tomcat日志仍旧无法查出问题所在,仍旧只有Error listenerStart错误,而没有进一步的错误信息。这时候我把log4j.properties文件中加入
log4j.logger.org.springframework=debug修改完成之后重新启动tomcat,此时就出现了更详细的错误信息
此种情况下一般会出现两种错误:
(1)缺少相关的jar包(经查我的工程缺少jta.jar包造成的,于是将此包放入工程之中
)
(2)和tomcat的lib中的某些包有重复,故需要把重复的包删除掉
3、重新启动tomcat之后,我的工程依旧无法启动,此时会报出“Exception starting filter struts2”的错误。但是仍旧没有进一步的错误信息。这时候我再次在log4j.properties中加入如下语句:
log4j.logger.org.apache.struts2=debug重新启动服务器之后,仍旧没有进一步的错误信息,无奈,只好将上面语句修改为
log4j.logger.org.apache=debug再次重新启动服务器,由于上面的修改会大幅度增加日志信息的量,故会有很多的冗余信息,可以略过,在最后面我看到了更详细的报错信息:
2010-04-16 15:40:58 - Dispatcher:27 - ERROR - Dispatcher initialization failed Unable 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出现这种错误也有几种情况:
(1)缺少必须的包 如:commons-fileupload等
(2)struts2-core-2.1.8.1.jar包的问题
我的是属于第二种,至于原因本人现在还不甚了解,但是换成struts2-core-2.0.14.jar之后就不再报上面的错误了
4、再次重启tomcat,服务器日志中再次出现其他错误:
2010-04-16 15:54:09 - [/BOSS_OS_NAV]:3604 - ERROR - Exception starting filter struts2 java.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).出现这种错误的几种情况如下:
(1)依旧检查jar包,看是不是有多余的jar包造成了冲突
(2)struts.xml文件中有错误,比如action中的包路径,看看是否是由于出现了不应该出现的空格或者干脆就是路径不存在
(3)某些特定jar包之间的版本不一致(本人遇到的就是地但中情况,由于在上面的步骤中我修改struts2-core-2.1.8.1.jar为struts2-core-2.0.14.jar,但是这样就与另一个jar包struts2-spring-plugin-2.1.8.1.jar的版本产生了冲突,故我把此jar包的去掉,引入了相同版本的jar包)
5、再次重新启动服务器,终于OK了