2012-08-22 43 views
4

当我将SLF4J记录器添加到我的代码中时,出现一条错误消息:“类路径包含多个SLF4J绑定”。在网站slf4j.org/codes上,它声明我应该从类路径中移除它们。但是,这两个记录器包含在我的maven依赖项中。我的整个maven依赖关系文件夹都包含在类路径中。我并不负责进入Maven依赖关系的内容,因此它不是我编辑它的地方,所以它只在Maven依赖关系文件夹中有一个记录器依赖关系。我可以指定Java程序,以便它只使用其中一个记录器吗?如何在有多个SLF4J绑定时使用SLF4J

EJAY

+0

你能后的堆栈跟踪也?看起来这只是一个警告。 –

回答

1

弄清楚哪些项目的依赖是包括SLF4J实现,那么排除:

<dependency> 
     <groupId>other-group</groupId> 
     <artifactId>dependency-id</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
            <!-- or slf4j-jdk14, etc --> 
       <artifactId>slf4j-simple</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+0

谢谢大家的好评,但是我发现哪里出了问题。这是我在Eclipse中设置的一些设置,它提供了警告。它基本上读取pom.xml文件两次,因此两次调用slf4j实现,这就是为什么它给了我一个警告。这很有意义,因为我的同事使用相同的pom.xml,他的记录器工作正常。 –

+0

@Ejay很高兴你解决它。您应该将其作为答案发布,然后接受它。 – artbristol

0

如果你一定不能调整现有的Maven依赖关系来解决这个问题,你可以确保你的SLF4J在classpath中出现的结合首先,作为第一个结合是一个变用于多个绑定的情况。

但是,您仍然会收到警告,但您的SLF4J记录器将会被使用。

您也可以考虑利用maven模块将项目分成多个部分,以便您可以在每个模块的pom.xml文件中以不同方式管理每个部分中的依赖关系。