关于SLF4J: Failed to load class的问题及解决(博客开篇)

    这几天一直在学习JTA,考虑到之前用的Hibernate 3.1版本有些老了,就下载了最新的Hibernate Core 3.3.1GA,Hibernate Annotation 3.4.0GA和Hibernate Entity Manager 3.4.0GA。在MyEclipse中导入相关的包,代码编译的时候完全没问题,直到运行的时候,提示:

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
	at org.slf4j.LoggerFactory.(LoggerFactory.java:60)
	at org.hibernate.cfg.Configuration.(Configuration.java:151)
	at org.hibernate.ejb.Ejb3Configuration.(Ejb3Configuration.java:107)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
	at com.jpa.util.JPAUtil.(JPAUtil.java:18)
	at com.jpa.JPATest.addSystemUser(JPATest.java:34)
	at com.jpa.JPATest.main(JPATest.java:27)

 

    提示信息中多次提到SLF4J,google了一下,才发现这是现在的Hibernate使用SLF4J API记录日志,所以在Hibernate的lib中,不再提供Log4J的包,而大部分框架依然使用Log4J记录日志,这样导致了兼容性问题。

    解决办法,两步:一、在编译路径中添加Log4J的包,比如我一直在用的Log4J 1.2.14;二、再添加一个叫做slf4j-log4j12 1.5.2的包进行转换,注意到这里的log4j12,可能对应的是log4j 1.2版本。解决!

 

    本文部分内容参考:http://bbs.chinaunix.net/viewthread.php?tid=1266419

    slf4j-log4j12 API可到以下地址下载:http://mirrors.ibiblio.org/pub/mirrors/maven2/org/slf4j/slf4j-log4j12/1.5.2/

你可能感兴趣的:(Java技术)