首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[总结]Struts+Spring+Hibernate工程在tomcat上无法启动原因查找

2012-10-08 
[总结]Struts+Spring+Hibernate工程在tomcat下无法启动原因查找这两天新接手一个Struts+Spring+Hibernate

[总结]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的日志信息。
  通过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 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
出现这种错误也有几种情况:
(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 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).
出现这种错误的几种情况如下:
(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了


热点排行