Java slf4j-log4j12-1.7.2.jar不需要的依赖关系

Java slf4j-log4j12-1.7.2.jar不需要的依赖关系,java,maven,log4j,slf4j,Java,Maven,Log4j,Slf4j,我在一个多模块maven eap项目中工作。以前,它是使用slf4j作为日志框架实现的。我将它的日志配置更改为使用log4j2,因为底层日志框架仍然使用slf4j。我这样做时参考了文件。但是当我构建项目并在jboss中部署它时,我得到了以下错误 类路径包含多个SLF4J绑定,在xxx/lib/log4j-SLF4J-impl-2.0.2.jar/org/SLF4J/impl/StaticLoggerBinder.Class和xxx/lib/SLF4J-log4j12-1.7.2.jar/org/

我在一个多模块maven eap项目中工作。以前,它是使用slf4j作为日志框架实现的。我将它的日志配置更改为使用log4j2,因为底层日志框架仍然使用slf4j。我这样做时参考了文件。但是当我构建项目并在jboss中部署它时,我得到了以下错误

类路径包含多个SLF4J绑定,在xxx/lib/log4j-SLF4J-impl-2.0.2.jar/org/SLF4J/impl/StaticLoggerBinder.Class和xxx/lib/SLF4J-log4j12-1.7.2.jar/org/SLF4J/impl/StaticLoggerBinder.Class中找到绑定

注意:我从未将slf4j-log4j12-1.7.2.jar依赖项添加到pom.xml或任何子模块中。我不知道如何将依赖项复制到lib文件夹中


各位有什么意见吗

正如它所说,这意味着您的项目中确实有几个slf4j绑定。 你现在处理它是对的,因为它会变得很糟糕,并隐藏日志

你应该跑

mvn dependency:tree
查看哪些模块将依赖项添加到slf4j-log4j12-1.7.2.jar。这可能是因为您对它有一个可传递的依赖关系

您的问题实际上有几种解决方案:

您可以明确地排除slf4j-log4j 您可以使用提供的范围 您可以使用空工件 我指的是以下几点。这是关于排除commons日志记录,但对于slf4j-log4j,应该是相同的

当我遇到同样的问题时,我发现解决方案2是最容易设置和维护的。但解决方案3也应该可以很好地工作