问题描述
使用日志一直都是使用了slf4j-api
、slf4j-log4j12
、log4j
这三个包结合起来使用,新搭建了一个项目,然后创建了一个main
方法进行测试运行。然后发现报错了。
Failed to load class org.
解决过程
去SLF4J的官网查询这个错误的原因是什么,得到的结论是:
无法加载类 org.
当无法将类org.加载到内存中时,会报告此警告消息 。如果在类路径上找不到合适的SLF4J绑定,就会发生这种情况。在类路径中放置 , ,或 中的一个(并且只有一个)应该可以解决问题。
自1.6.0起SLF4J版本1.6 以来,在没有绑定的情况下,SLF4J将默认为无操作(NOP)记录器实现。
如果您负责打包应用程序并且不关心日志记录,那么将放在应用程序的类路径中将摆脱此警告消息。请注意,嵌入式组件(如库或框架)不应声明对任何SLF4J绑定的依赖关系,但仅依赖于slf4j-api。当库声明对SLF4J绑定的编译时依赖性时,它会将该绑定强加给最终用户,从而否定SLF4J的目的。
总的来说,就是缺少这个依赖,但是我的是Maven项目,我很确定我已经加入了这个包,但是为什么还是会出错呢。
后来才发现了问题的所在,我的依赖如下所示:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.}</version>
<scope>test</scope>
</dependency>
因为我把范围设置为test,也就是说只有在测试环境下,才可以使用,而我是在main
方法中直接运行,所以不属于测试环境,所以这个包相当于就没有加入依赖。后来修改为:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.}</version>
<scope>compile</scope>
</dependency>
这个错误就没有了。