今天启动开发的项目,碰到了一个日志上的bug:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder。刚看到一脸懵。于是到网上查了一下,也有遇到类似问题的。说是要加一些依赖,但是我试了不起作用。后来看到了一篇讲slf4j集成logback和log4j的文章,给我了我灵感,尝试了一下,解决了问题。文章的地址:https://www.jianshu.com/p/9a283ca164ca

一、原因:首先我们要知道slf4j-api是日志的规范,定义了日志的接口。logback和log4j实现了该这些规范,提供了日志的支持。logback和log4j都会用到StaticLoggerBinder去创建Logger。StaticLoggerBinder需要初始化。logback和log4j都会对StaticLoggerBinder初始化。下面是StaticLoggerBinder在logback和log4j中的目录图:

logback

log4j

在StaticLoggerBinder初始化的时候,如果我们项目中同时存在这两个jar包,那么StaticLoggerBinder这个类就会冲突,导致StaticLoggerBinder初始化失败,因此造成了java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder。

我的项目默认是要使用logback来作为日志的实现的,因此logback-classic存在是很正常的。所以slf4j-log4j12这个jar的存在导致了这个问题。经查slf4j-log4j12存在于我的一个名叫dingtalk-sdk的依赖中。

二:解决

因为我的项目中要使用logback,所以我要把log4j去掉。所以我在dingtalk-sdk这个依赖中加入了exclusion。如下:

现在就可以正常启动项目了。

最新文章

  1. 即时通讯 TCP UDP
  2. 【译】用jQuery 处理XML--浏览器中的XML与JavaScript
  3. Remote Displayer for Android V1.2
  4. C#函数、参数数组(例子)★
  5. 简单的聊天程序,主要用到的是Socket
  6. hibernate 打印sql和参数的配置
  7. php修改排序,上移下移
  8. wcf教程
  9. JVM笔记5:Class文件结构
  10. Tomcat绑定多个IP地址 多域名绑定
  11. 【5】namenode启动过程
  12. ACM Least Common Multiple
  13. 数据分析三剑客之pandas
  14. Vue学习三:v-on:click命令及v-html命令学习
  15. Linux - 更改软件源
  16. django之创建第9个项目-管理后台admin
  17. 关于display:grid layout
  18. 60. vbe6ext.olb 不能被加载
  19. 隐藏基于Dialog的MFC的主窗体
  20. mydumper安装

热门文章

  1. 在GUI程序中使用控制台的两种方法
  2. NodeJS学习笔记六
  3. android中代码操作外部SD卡出错:W/System.err(1595): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
  4. VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)
  5. asp.net 获取mp3 播放时长
  6. unhandledException详细介绍
  7. 【转载】package-info
  8. 如何在 OSX 中使用多个JDK版本
  9. System.data.sqlite安装
  10. BZOJ 2226 【SPOJ 5971】 LCMSum