【Hibernate】Hibernate3.x独立执行时的Failed to load class "org.slf4j.impl.StaticLoggerBinder"错误

按理说,假设Hibernate不依附于SSH执行,像《【Struts2+Hibernate3+Spring3】利用SSH整合,完毕打印用户表,用户登录、注冊、改动password系统》(点击打开链接)一样。把hibernate-distribution-3.6.10.Final解压之后。把根文件夹的hibernate3.jar,hibernate-distribution-3.6.0.Finallib equired下的全部jar。hibernate-distribution-3.6.0.Finallibjpa下的全部jar也就是那个hibernate-jpa-2.0-api-1.0.1.Final.jar。hibernate-distribution-3.6.0.Finalliboptionalc3p0下的全部包。也就是那个c3p0-0.9.1.jar,复制到对应的Javaproject载入相同能够执行了。可是为什么没有Spring与Struts2的支持,就会出现例如以下图的,Failed to load class "org.slf4j.impl.StaticLoggerBinder"错误呢?


这个问题在Hibernate4.x中没有,可能意识到自己这样是不正确的,在Hibernate3.x中,Hibernate使用SLF4J API这个接口记录日志。可是在Hibernate的lib中,却没有提供Log4J的包,都不知道在想甚的,自己用了的lib包由于害怕与其他框架的日志记录包冲突却不提供。导致自己无法独立执行!

因此,我们要自己补充SLF4J API这个接口。

详细是打开SLF4J官方站点(点击打开链接),下载:


解压之后,例如以下图结构,版本没问题,取走当中的slf4j-log4j12-1.7.12.jar。载入到独立执行的Hibernate3.x Javaproject。


因为slf4j像Hibernate兼容各种连接Mysql,Orcale等数据库连接jar包的接口一样,仅仅是一个兼容各种生成Java日志jar包。

还要下载一个真正工作的日志jar包,这里使用最大众的log4j。尽管平时我们一般都不会记录日志的了……打开Apache的官网(点击打开链接)例如以下图。选择log4j-1.2.17.zip(Windows)或者log4j-1.2.17.tar.gz(Linux)。


解压之后,把apache-log4j-1.2.17下的log4j-1.2.17.jar,相同载入到独立执行的Hibernate3.x Javaproject。

此时。独立的Hibernate3.x已经能够执行了,只是还没有完,执行时候还会出现例如以下的log4j:WARN Please initialize the log4j system properly警告:


要解决问题很easy,建立LOG4J 的配置文件就可以。例如以下图在src文件夹下创建配置文件。右击src文件夹,选择菜单New>File。文件名称输入log4j.properties,


在里面写入例如以下内容:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
此时。Hibernate3.x最终能够自己独立执行了,真的是晕死了……

原文地址:https://www.cnblogs.com/mfmdaoyou/p/6684982.html