1、与Hibernate的第一次痛苦擦身

         Hibernate推出很久了,以前只是大概上了解其实现原理,没有真正抽时间练习过。近期终于抽出时间找了一本《Hibernate项目开发宝典》来看,个人学习习惯是直接通过实例来理解内容。所以直接把第三章相关的源码从光盘上移到工程中,配置好数据库、web容器tomcat等,启动后在浏览器中输入URL,页面可以正常访问到,如图:


输入数据库中存在的用户名、密码单击登录后,悲剧便发生了,首先报如下异常:

1、java.lang.NoClassDefFoundError:org/apache/commons/lang/builder/ReflectionToStringBuilder

从提示上来看应该是类ReflectionToStringBuilder没有找到,说明common-lang.jar没有添加,直接去官网下载添加到web窗口放置jar的位置后,再运行。

2、org.apache.commons.logging.LogConfigurationException:User-specified log class 'org.apache.commons.logging.impl.Log4jLogger' cannotbe found or is not useable.

这个提示是说缺少log4j.jar,同上直接去官网下载添加到web窗口放置jar的位置后,再运行。

3、java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory

这个提示是说缺少commons-log.jar,同上直接去官网下载添加到web窗口放置jar的位置后,再运行。

4、java.lang.NoClassDefFoundError:org/apache/commons/beanutils/BeanUtils

这个提示是说缺少commons-beanutils.jar,下载添加后,再运行。

5、java.lang.NoClassDefFoundError:org/hibernate/Session

怎么把hibernate这个主角也忘记添加了,上官网下载添加后,再运行。

6、java.lang.NoClassDefFoundError:org/dom4j/DocumentException

看来hibernate需要使用dom4j解析xml文件 ,上官网下载添加后,再运行。

7、java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory

有点麻木了,缺少这么多的jar包,为何hibernate不把这些东东全部包进来呢?spring3.x也把jar拆分了,难道两者相互效仿?算了吧,这里打个广告,想要找jar可以去www.findjar.com试试。微笑

把slf4j.jar下载添加到窗口后,再运行,并没有给面子,出现了java.lang.IncompatibleClassChangeError:Class org.apache.log4j.Logger does not implement the requested interfaceorg.slf4j.Logger,这说明什么?这说明log4j.jar与slf4j.jar两者不匹配,两者关系可以想像为slf4j是一个接口,hibernate直接面向slf4j这个接口编程,而log4j是slf4j的实现。

还是老老实实上官网下载两者最新版本的jar吧。忘记提醒一句了:记得把slf4j-api.jar也下载添加进来。

8、java.lang.NoClassDefFoundError:javax/persistence/EntityListeners

从错误信息上看不再是日志的问题了,这个异常表示hibernate持久化所依赖的jar没有找到,这个jar到底是什么呢?不怕,咱有google。一查原来是缺少ejb3-persistence.jar,下载添加后,再运行。

9、org.hibernate.HibernateException:JDBC Driver class not found:com.mysql.jdbc.Driver

缺少连接mysql的mysql-connection.jar,下载添加后再运行。

10、java.lang.NoClassDefFoundError:org/apache/commons/collections/map/LRUMap

真的要成为‘麻婆豆腐’了,都想站起来转一圈了,这个异常表明缺少commons-collections.jar,下载添加后再运行。

11、java.lang.ClassNotFoundException:javassist.util.proxy.MethodFilter

缺少javassist.jar包,下载添加后再运行。

12、java.lang.ClassNotFoundException:javax.transaction.Synchronization

缺少jta-1.1.jar包,下载添加后再运行。

13、java.lang.ClassNotFoundException:antlr.ANTLRException

这个异常更清晰说明缺少antlr.jar,下载添加后再运行


正常了,不再报缺少jar的异常了顿感清醒,但抛出如下异常:

java.lang.NullPointerException org.apache.jsp.message_jsp._jspService(message_jsp.java:115)

这个异常是说空指针错误,属于业务问题,这个比较好办,由于这里web容器使用的是tomcat,只需要找到tomcat/work/Catalina/localhost的深层文件夹中有一个message_jsp.java文件,查看115行是哪儿抛了空指针即可。


【备注】:

1、宗旨:系统缺少什么你就给它什么,尽管有时候很无聊,但这毕竟是唯一出路

2、在第7步时在官网下载slf4j后若还出问题,请把slf4j-api.jar也添加进来

3、若找jar时方便起见,可以去www.findjar.com

4、为了下次再走类似的路,在这里把所需的jar添加到附件中,可供直接使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值