關於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.<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記錄日誌,這樣導致了兼容性問題。
      解決辦法,兩步:一、在編譯路徑中添加Log4J的包,比如我一直在用的Log4J 1.2.14;二、再添加一個叫做slf4j-log4j12 1.5.2的包進行轉換,注意到這裏的log4j12,可能對應的是log4j 1.2版本。解決!
 
 
      博主原文2008年11月5日發表於[url]http://feichangcai.javaeye.com/admin/blogs/262848[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章