【发布时间】:2015-08-12 08:30:05
【问题描述】:
我在 Java 8 运行时上运行 JBoss 4.2GA。
我的耳朵有多个具有冲突 SLF4J 绑定的战争,
/slf4j-log4j12-1.7.5.jar and log4j-slf4j-impl-2.0.2.jar.
我可以让他们共存而不是互相“抱怨”吗?
【问题讨论】:
我在 Java 8 运行时上运行 JBoss 4.2GA。
我的耳朵有多个具有冲突 SLF4J 绑定的战争,
/slf4j-log4j12-1.7.5.jar and log4j-slf4j-impl-2.0.2.jar.
我可以让他们共存而不是互相“抱怨”吗?
【问题讨论】:
嗯,有多个绑定,所以抱怨是完全有效的。不过,这只是一个信息,SLF4J 将决定使用哪个绑定并坚持使用它。如果您不想要该消息,则必须在 .war 文件中排除您不想要的依赖项。最后,无论如何只会使用一个绑定,最好自己做出选择,而不是让某些代码随机选择一个。
documentation 是这样说的:
SLF4J 发出的警告就是这样,一个警告。即使当 存在多个绑定,SLF4J 将选择一个日志记录 框架/实现并与之绑定。 SLF4J 选择的方式 绑定由 JVM 确定,并且出于所有实际目的应该 被认为是随机的。从 1.6.6 版本开始,SLF4J 将命名 它实际上绑定到的框架/实现类。
还有……
库或框架等嵌入式组件不应声明 对任何 SLF4J 绑定的依赖,但仅依赖于 slf4j-api。当一个 library 声明了对 SLF4J 绑定的编译时依赖,它 将这种绑定强加给最终用户,从而否定了 SLF4J 的目的。
【讨论】: