我試圖從Hibernate 3.2升級到3.4,顯然使用slf4j。我們的項目目前使用log4j。所以我的假設是我應該使用slf4j-log4j12包裝實現。休眠3.4與slf4j和log4j
Maven的SLF4J依賴是:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
雖然log4j的依賴是:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
兩個SLF4J-log4j12和log4j的引用最新版本(我可以在Maven倉庫中找到) 。當我運行我的應用程序時,Hibernate在其日誌記錄中失敗:
java.lang.NoSuchFieldError: name
at org.slf4j.impl.Log4jLoggerAdapter.<init>(Log4jLoggerAdapter.java:75)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:75)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:103)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:163)
...
我在想什麼?
編輯1:如果我刪除從我的pom.xml log4j的依賴我得到的錯誤:
java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:163)
...
編輯2:This blog索賠的問題是Hibernate的註解與錯誤運送引起slf4j-api.jar的版本。
Hibernate 3.4?這篇文章是來自未來嗎? – cherouvim 2009-03-08 15:01:16