Estoy intentando actualizar desde Hibernate 3.2 a 3.4, que al parecer utiliza slf4j. Nuestro proyecto actualmente usa log4j. Entonces mi suposición es que debería estar usando la implementación envuelta slf4j-log4j12.Hibernate 3.4 con slf4j y log4j
El Maven slf4j dependencia es:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
Mientras que la dependencia log4j es:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
Tanto slf4j-log4j12 y log4j hacen referencia a la última versión (que podría encontrar en el repositorio Maven) . Cuando ejecuto mi aplicación, Hibernate falla en su registro:
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)
...
¿Qué me falta?
Edición 1: Si quito la dependencia log4j de mi pom.xml me sale el error:
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)
...
Edición 2:This blog afirma que el problema es causado por las anotaciones de hibernación de envío con el mal versión de slf4j-api.jar.
Hibernate 3.4? ¿Esta publicación proviene del futuro? – cherouvim