【问题标题】:which version of slf4j-log4j12 to use with hibernate 3.6.0.Final (having internal dependency of slf4j-api 1.5.8)哪个版本的 slf4j-log4j12 与 hibernate 3.6.0.Final 一起使用(具有 slf4j-api 1.5.8 的内部依赖)
【发布时间】:2012-11-13 09:48:30
【问题描述】:

我正在使用 hibernate-core 3.6.0.Final 和 hibernate-annotations 3.5.6-Final。

Hibernate 具有 slf4j-api 1.5.8 的依赖项,因此它会自动添加到我的 maven 项目依赖项中。

但是当我尝试运行该项目时,我收到以下错误:

java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory

谷歌搜索说这是由于 slf4j 和 slf4j-log4j12 的版本不同,主要是使用 hibernate 3.3 造成的

我补充说:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.8</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.5.8</version>
        </dependency>

或者,两个和一个,但没有一个选项可以解决问题。我仍然收到IllegalAccessError。 如果有人能指出我做错了什么,那就太好了。

【问题讨论】:

    标签: hibernate maven-2 struts2


    【解决方案1】:

    我的 pom.xml 中有以下 log4j 和 slf4j 的依赖项。它对我来说很好,希望这对你也有帮助

        <properties>
          <slf4j.version>1.6.4</slf4j.version>
          <log4j.version>1.2.16</log4j.version>
        </properties>
    
        <dependencies>
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
          </dependency>
    
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
          </dependency>
    
          <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
          </dependency>
    
        </dependencies>
    

    【讨论】:

    • 它似乎工作了,虽然我通过使用&lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt; &lt;version&gt;3.6.0.Final&lt;/version&gt; &lt;/dependency&gt; 而不是&lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;hibernate-core&lt;/artifactId&gt; &lt;version&gt;3.6.0.Final&lt;/version&gt; &lt;/dependency&gt; 解决了我的问题,并且包含了与hibernate的内部依赖项相同版本的slf4j-log4j12,结果是1.6。 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多