相关疑难解决方法(0)

Hibernate 3.4与slf4j和log4j

我正在尝试从Hibernate 3.2升级到3.4,显然使用的是slf4j.我们的项目目前使用log4j.所以我的假设是我应该使用slf4j-log4j12包装实现.

Maven slf4j依赖是:

<dependency>
    <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

而log4j依赖是:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.15</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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)
    ...
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

编辑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)
    ...
Run Code Online (Sandbox Code Playgroud)

编辑2: 此博客声称问题是由使用错误版本的slf4j-api.jar的hibernate注释引起的.

java maven-2 hibernate log4j slf4j

23
推荐指数
3
解决办法
4万
查看次数

标签 统计

hibernate ×1

java ×1

log4j ×1

maven-2 ×1

slf4j ×1