移植项目时遇到的NoClassDefFoundError错误及其解决方法

最近在做一个小项目,用到Struts2+Hibernate4.原本在自己机器上运行时正常的,但当我把它移植到 另一台机器是出现了错误,错误具体信息如下:

移植项目时遇到的NoClassDefFoundError错误及其解决方法_第1张图片

看了一下错误提示,错误出在TypeDaoHibernateImpl这个类的getAllTypeList方法的SessionFactoryMgr.closeSession()这行上,由“NoClassDefFound“可推测出时因为运行时找不到SessionFactoryMgr这个类。检查了发现也引入了SessionFactoryMgr这个类,难道是classpath有问题,我又检查了classpath,在程序运行时将其打印出来并显示发现也是正常的。然后我逐步检查了我所做的移植步骤:

1、创建数据库和表,插入信息;

2、修改Hibernate配置文件对应的数据库URL和用户名及密码;

3、在MyEclipse里配置Tomcat位置;

4、MyEclipse引入project,添加所需JavaEE的library(其他library入Struts2、Hibernate、和JDBC驱动文件原来项目已经包含,不必再添加)。

很认真地检查并对照原来的项目,发现并没有错误,跟原来运行正常的项目一样,O__O "这些步骤也正确,项目也跟原来的一样,而且编译没有问题,怎么就不行?

解决方法:

上面遇到的问题应该是struts2的一个bug,删掉原来的Struts2和Hibernate的jar包后,再引入即可。

上网搜了很多,没找到解决办法,后来看了一个帖子说可能没有引入相关jar包。我一看,所需jar包都引入了,要不都删了再引入吧。然后一试,发现程序运行正常了。

总结:①多查资料,多动手,多实验,才能解决问题②任何程序都可能存在bug,strut2也不例外,要以理性的态度去对待、使用它

PS:源码在此

以上仅作为个人笔记和学习参考,若有不妥,谢谢指出

你可能感兴趣的:(Struts2,Hibernate,SSH整合)