错误消息“
http://www.slf4j.org/pres.html#version_mismatch
”中提供的链接指出:
SLF4J绑定指定了诸如slf4j-jdk14.jar或slf4j-log4j12.jar之类的工件,这些工件用于将slf4j绑定至基础日志框架,例如java.util.logging或log4j。混合使用不同版本的slf4j-api.jar和SLF4J绑定可能会导致问题。例如,如果您使用的是slf4j-api-1.6.6.jar,则还应该使用slf4j-simple-1.6.6.jar,而使用slf4j-simple-1.5.5.jar将不起作用。
注意 从客户端的角度来看,slf4j-api的所有版本都是兼容的
。对于任何N和M,使用slf4j-api-N.jar编译的客户端代码将与slf4j-api-M.jar一起完美运行。您只需要确保绑定的版本与slf4j-api.jar的版本匹配即可。您不必担心项目中给定依赖性所使用的slf4j-api.jar版本。您可以始终使用slf4j-api.jar的任何版本,并且只要slf4j-api.jar的版本及其绑定匹配,就可以了。
鉴于从客户端角度来看所有版本的slf4j-api都是可以互换的,在引入了不同版本的slf4j-api及其绑定(例如slf4j-log4j12)的情况下,请在您的POM中将它们明确声明为依赖项,如下所示:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version></dependency>
在这里,我假设您实际上不需要在提供的范围内声明slf4j-api和slf4j-log4j12。
另请参阅依赖机制简介,其中指出:
依赖关系中介-确定遇到工件的多个版本时将使用哪个依赖关系版本。当前,Maven 2.0仅支持使用“ 最接近的定义
”,这意味着它将在依赖树中使用与您的项目最接近的依赖版本。 您始终可以通过在项目的POM中明确声明版本来保证版本。



