這幾天一直在學習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.<clinit>(LoggerFactory.java:60)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
at org.hibernate.ejb.Ejb3Configuration.<clinit>(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.<clinit>(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記錄日誌,這樣導致了兼容性問題。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.<clinit>(LoggerFactory.java:60)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
at org.hibernate.ejb.Ejb3Configuration.<clinit>(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.<clinit>(JPAUtil.java:18)
at com.jpa.JPATest.addSystemUser(JPATest.java:34)
at com.jpa.JPATest.main(JPATest.java:27)
解決辦法,兩步:一、在編譯路徑中添加Log4J的包,比如我一直在用的Log4J 1.2.14;二、再添加一個叫做slf4j-log4j12 1.5.2的包進行轉換,注意到這裏的log4j12,可能對應的是log4j 1.2版本。解決!
slf4j-log4j12 API可到以下地址下載:[url]http://mirrors.ibiblio.org/pub/mirrors/maven2/org/slf4j/slf4j-log4j12/1.5.2/[/url]
博主原文2008年11月5日發表於[url]http://feichangcai.javaeye.com/admin/blogs/262848[/url]