gpt4 book ai didi

java - 带有 slf4j 和 log4j 的 hibernate 3.4

转载 作者:IT老高 更新时间:2023-10-28 20:34:58 25 4
gpt4 key购买 nike

我正在尝试从 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>

虽然 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声称该问题是由带有错误版本的 slf4j-api.jar 的 hibernate 注释引起的。

最佳答案

我没有问题

    <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>

     <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
<!-- concrete Log4J Implementation for SLF4J API-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>

关于java - 带有 slf4j 和 log4j 的 hibernate 3.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com