当前位置:  开发笔记 > 编程语言 > 正文

Hibernate 3.4与slf4j和log4j

如何解决《Hibernate3.4与slf4j和log4j》经验,为你挑选了2个好方法。

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

Maven slf4j依赖是:


    org.slf4j
     slf4j-log4j12
    1.5.6

而log4j依赖是:


    log4j
    log4j
    1.2.15

slf4j-log4j12和log4j都引用了最新版本(我可以在Maven存储库中找到).当我运行我的应用程序时,Hibernate的日志记录失败:

java.lang.NoSuchFieldError: name
    at org.slf4j.impl.Log4jLoggerAdapter.(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.(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.(LoggerFactory.java:60)
    at org.hibernate.cfg.Configuration.(Configuration.java:163)
    ...

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



1> Michael Pral..:

我没有问题

    
        org.hibernate
        hibernate-core
        3.3.1.GA
    
    
        org.hibernate
        hibernate-annotations
        3.4.0.GA
    

     
        org.slf4j
        slf4j-api
        1.5.6
    
    
    
        org.slf4j
        slf4j-log4j12
        1.5.6
    



2> Ceki..:

SLF4J常见问题解答回答了这个问题.请参阅

http://slf4j.org/faq.html#compatibility 和 http://slf4j.org/faq.html#IllegalAccessError

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有