Maven <exclusions>无效

时间:2015-06-06 11:09:52

标签: maven

运行Web服务器时,我收到以下信息:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Stefan/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Stefan/.m2/repository/ch/qos/logback/logback-classic/0.9.30/logback-classic-0.9.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
log4j:ERROR [sun.misc.Launcher$AppClassLoader@57bd06bf] whereas object of type 
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [WebAppClassLoader=440633929@1a438a49].

我尝试排除/ch/qos/logback/logback-classic/依赖项。这是我的pom.xml中的部分:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.4</version>
    <exclusions>
        <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </exclusion>
    </exclusions>
</dependency>

我添加了这个,但在Maven更新后,结果仍然相同。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

工件slf4j-api似乎不依赖于ch.qos.logback:logback-classic。您可以运行mvn dependency:tree来确定logback-classic的来源。

请参阅https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html

答案 1 :(得分:0)

你必须在这里看两件事。 1. SLF依赖。

  

SLF4J API旨在与一个且仅一个基础日志记录绑定   框架一次。如果课程中存在多个绑定   路径,SLF4J会发出警告,列出那些位置   绑定。

here。这意味着,可能存在依赖于logback-classic的amother jar。所以你必须找到它并排除类路径中所有那些依赖项。

  1. 错误是重新调整log4j。您正在使用slf4j-api这是基本选项。但是,两个类加载器(WebAppClassLoader - Tomcat版本和sun.misc.Launcher $ AppClassLoader - 正常的look here)正在加载不同的版本,并且试图互相引用。因此,运行应用程序的方式也可能存在问题。
  2. 请清除第一个问题,看看是否所有必需的类都加载了相同的类加载器。您可以使用@manouti提供的链接来了解依赖关系树。看看这个helps是否也是如此。快乐的编码。