java.lang.NoSuchMethodError:org.apache.log4j.Logger

时间:2014-05-06 15:59:38

标签: java log4j slf4j ivy

我们使用常春藤来管理多项目java应用程序,最近这个错误在我们构建时开始出现。是什么导致了这个?

4 个答案:

答案 0 :(得分:4)

通过将以下行添加到ivy.xml中依赖项部分的末尾来修复此问题:

<dependencies>
         
  <exclude module="log4j-over-slf4j" /> 
</dependencies>

为什么这是一个问题?

答案 1 :(得分:3)

看起来log4j桥没有实现log4j的完整接口。如果您仍在使用直接log4j调用,则需要slf4j bridge jar和log4j jar

在您的情况下,您似乎排除了桥接jar,因此所有slf4j调用都直接转到log4j而不是桥接。

如果你的代码通过xml文件调用log4j,这将有效。但是,如果您的代码以编程方式调用log4j初始化,则此桥将无法正常工作

答案 2 :(得分:1)

我知道这是一个非常古老的问题,但我想分享对我来说很好的事情。如果对于彼此相互依赖的两个项目有不同的slf4j-log4j *工件,例如spring数据jpa和spring MVC,就会发生这种情况。保持一致,甚至更好地拥有父母pom。在我的情况下,我在我的spring数据jpa项目上有slf4j-log4j12,在我的spring MVC上有slf4j-log4j13。

答案 3 :(得分:-1)

pom.xml

评论此依赖关系
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j13</artifactId>
    <version>
</dependency>

添加(或保留)以下内容:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
</dependency>

无论您何时看到有关Log4j的编译时错误,请添加以下导入:

import org.apache.log4j.Logger;