Hibernate配置常见错误

本文介绍了在使用Hibernate框架过程中常见的日志配置错误及其解决办法,包括log4j配置缺失、slf4j版本不匹配等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误1:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

错误原因:

          这是一个警告信息,提示说没有找到Log4j的配置信息,不能为Hibernate环境提供日志信息,要求初始化log4j配置文件。

解决方法:

           在项目的src下添加log4j.properties文件,该文件是log4j配置信息,内容如下:

           
#日志级别和输出日志形式
log4j.rootLogger=OFF,console,console  
#输出级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL),输出位置1、输出位置2...
#控制台输出 
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n


错误2:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Level

错误原因:

  缺少log4j,因为hibernate框架本身也使用了第三方组件log4j来输出Hibernate环境下执行的信息。

解决方法:

为项目导入log4j-1.2.15.jar包,或其他版本的都可以。


错误3:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

错误原因:

找不到类StaticLoggerBinder,缺少日志接口包slf4j-log4j.jar

解决方法:

导入slf4j-log4j12-1.5.8.jar,这个包与Hibernate3.3.2的版本对应        


错误4:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

错误原因:

找不到类LoggerFactory,缺少包slf4j-api.jar 

解决方法:

导入slf4j-api-1.5.8.jar,这个包与Hibernate3.3.2的版本对应        


错误5:

SLF4J: The requested version 1.6.99 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.

错误原因:

这是jar包slf4j-log4j12.jar版本与Hibernate版本不相符引起的 

解决方法:

删除原来的版本的jar包,导入slf4j-log4j12-1.5.8.jar这个版本的jar包


错误6:

Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z

错误原因:

在Hibernate下,导入classes12.jar时会报这个错误 

解决方法:

删除classes12.jar,导入ojdbc5.jar或ojdbc6.jar来取代        


错误7:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

错误原因:

Hibernate是采用JDBC 驱动,在配置文件hibernate.cfg.xml的<session-factory name="test">节点多了一个name属性

解决方法:

 删除节点<session-factory>的name属性     



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智学无忧-老曹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值