springboot 关于 Class path contains multiple SLF4J bindings.警告的解决

springboot 关于 Class path contains multiple SLF4J bindings.警告的解决

有一次配置好springboot项目启动后,忽然发现有下边的警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/mavenJarOnline/ch/qos/logback/logback-classic/1.1.9/logback-classic-1.1.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/mavenJarOnline/org/slf4j/slf4j-log4j12/1.7.22/slf4j-log4j12-1.7.22.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
原因分析:

上边的大概意思是说logback-classic 包和slf4j-log4j12 包,关于org/slf4j/impl/StaticLoggerBinder.class 这个类发生了冲突。
发生这个错误的原因,首先logback 日志的开发者和log4j 的开发者据说是一波人,而springboot 默认日志是,较新的logback 日志。但是在以前流行的日志却是log4j ,而且很多的第三方工具都含有log4j 得引入。
而我们在项目开发中,难免会引入各种各样的工具包,所以,基本上springboot 项目,如果不注意,肯定会出现这种冲突的。

问题隐患:

当然最关心的是它是否有隐患,如果你在开发工具中运行,对,没毛病,一般会正常启动。
经过我使用情况中的观察,貌似springboot 配置成tomcat运行 ,即修改成war 包之后,一般这个警告没有什么影响;但是如果是传统的jar 包,尽管你在开发工具中能正常运行,也可能在打完包之后不能运行。

问题出现:

因为我们是分布式项目开发,服务层作为一个jar 运行,而接口调用和前端页面,作为一个war 一起运行,也就是说我们即有war ,又有jar ,项目部署的时候,需要打完包之后运行才可以。
在打完包之后,war 包能正常运行,jar 包不能正常运行,报了如下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner
.java:48)at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)Caused by: java.lang.ExceptionInInitializerErrorat org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:72)at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:45
)at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogF
actory.java:155)at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogF
actory.java:132)at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273)at org.springframework.boot.SpringApplication.<clinit>(SpringApplication
.java:190)at spingboot.study.SpringbootStudyApplication.main(SpringbootStudyApplic
ation.java:14)... 8 more
Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar A
ND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. Seealso http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.at org.slf4j.impl.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:54
)... 19 more

问题解决:

当然问题我不敢确定一定是因为warjar 的原因,你们也可能不关心这个,我们只想知道如何解决这种问题而已。
问题解决办法很简单,就是既然抛了jar包冲突 ,那我们就排除一个jar 包即可。关键是排除哪一个jar包 ,这里注意下了,如果你用的是logback 日志,一定要排除slf4j-log4j12 包,不要排除logback-classic 包。
即找到pom.xml 文件,如果你们的开发工具,比如eclipseidea 都可以看引入jar 包的联系,比如idea可以这样看到你的依赖结构:
这里写图片描述
点击后,弹出下边的这样的结构:

这里写图片描述
通过上图中,你可以看到zookeeper 包中默认引入了slf4j-log4j12包,除此之外,还有我们springboot 一定引入的spring-boot-starter-web 包,它里边也有这个slf4j-log4j12 引入。
我们只要在pom.xml 里排除这个即可。
如下:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--排除这个slf4j-log4j12--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions>
</dependency>

下边是我们项目引入的第三方的工具包中:

 <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.8</version><!--排除这个slf4j-log4j12--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# 计算机ip,C# 获取电脑的IP,网关,MAC,计算机名。。

【实例简介】【实例截图】【核心代码】using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;us…

wxml 判断 小程序_如何判断小程序外包公司是否靠谱

微信小程序依附微信App&#xff0c;由于其无需下载&#xff0c;无需安装&#xff0c;无需注册&#xff0c;直接用微信授权登录&#xff0c;不占内存等优势在短短2年多的时间斩获超过10亿用户。又因为微信官方开通了小程序附近五公里展示以及在微信搜一搜增加“小程序”搜索选项…

springboot配置启动后自动打开浏览器访问项目

springboot配置项目启动后自动打开浏览器访问项目 有时候在单机部署&#xff0c;或者项目没有在IDea 开发工具中运行&#xff08;idea可以自动打开tomcat项目&#xff09;&#xff0c;需要项目启动后自动打开浏览器访问项目&#xff0c;配置方法很简单。 一、具体步骤 所用到…

idea install 失败_idea maven install 卡住,无报错排查。

今天使用idea打包&#xff0c;执行install&#xff0c;看控制台日志&#xff0c;卡主了(意思是日志不继续在控制台输打印了&#xff0c;卡主了&#xff0c;也看不到错误)&#xff0c;也没有报错&#xff0c;然后进行排查。进入dos命令&#xff0c;进入到项目的根目录&#xff0…

研祥计算机U盘启动,研华工控机U盘启动设置

研华工控机U盘启动设置_计算机硬件及网络_IT/计算机_专业资料。研华工控机U盘启动研华IPC-610工控机安装的是XP版本&#xff0c;有时安装控制软件不满意时需要卸载软件&#xff0c;往往卸载的不彻底&#xff0c;使得安装无法顺利进行&#xff0c;这样就需要恢复系 统到开始比较…

ladder怎么读_ladder 是什么意思_ladder 的翻译_音标_读音_用法_例句_爱词霸在线词典...

全部四级六级Oh… Why dont you use the ladder?出自-2014年6月听力原文Use a ladder to help her reach the tea出自-2014年6月听力原文It provides a ladder of opportunity for the wealthy.出自-2016年6月阅读原文Americas education system has become less a ladder of …

服务器整机性能测试实验室,分析测试中心-重点实验室

1、XPS(可做刻蚀XPS&#xff1b;UPS价带谱)2、TEM(普通形貌、高分辨透射电镜&#xff1b;可测磁性样品TEM)3、SEM(场发射扫描电镜&#xff1b;可测磁性样品SEM&#xff0c;可喷金)4、BET(可测介孔、微孔材料比表面、孔容及孔径分布等全套分析&#xff0c;也可做水蒸汽、有机气体…

springboot中注入FilterRegistrationBean不生效原因

springboot中注入FilterRegistrationBean不生效原因 回顾 最近自定义了两个过滤器&#xff0c;接口请求返回加密和sql注入处理过滤器&#xff0c;因为在封装一些工具包&#xff0c;我在单独调好之后&#xff0c;就打算做成一个注解&#xff0c;像springboot启动类上加EnableS…

mfc 固定编辑框输入上限和下限_MFC中编辑框数字限制范围

为编辑框添加 int变量的时候下面有2空可以填写最大值与最小值&#xff1b;或者自己添加代码DDV_MinMaxInt(pDX, m_nPort, 1, 65535);但是这个不一定要工作。解决方法&#xff1a;给编辑框添加一个失去焦点(killfocus)的消息&#xff0c;在里面UpdateData(TRUE)一下就搞定。原因…

服务器虚拟机密度,服务器整合:虚拟机密度大未必是好事

虚拟化技术已经给数据中心带来颠覆性变革&#xff0c;但极力压缩服务器虚拟化主机数量、过度提高虚拟机密度的做法并非最佳选择。在考虑虚拟化环境时&#xff0c;时代特色造就了一种新趋势&#xff0c;即将极为丰富的资源赋予一套单独的物理服务器、并以此为基础支持海量虚拟机…

jps命令原理

一、说明 jps位于jdk的bin目录下&#xff0c;其作用是显示当前系统的java进程情况&#xff0c;及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”&#xff0c;jps并不使用应用程序名来查找JVM实例。因此&#xff0c;它查找所有的Java应用程序…

make *** 没有指明目标并且找不到 makefile。 停止。_Makefile目标文件搜索(VPATH和vpath)...

我们都知道一个工程文件中的源文件有很多&#xff0c;并且存放的位置可能不相同(工程中的文件会被放到不同的目录下)&#xff0c;所以按照之前的方式去编写 Makefile 会有问题。我们之前列举的例子&#xff0c;所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖…

电脑设置访问苹果服务器未响应,苹果连接电脑没反应,教您苹果连接电脑没反应怎么解决...

但只要是电子设备&#xff0c;那就一定会出现问题&#xff0c;所以苹果手机也不能例外。不过小编我有想好解决的方法&#xff0c;并且我已经将解决苹果手机连接电脑没反应的方法写在了文章的后面&#xff0c;小伙伴们往下看即可。苹果手机作为手机品牌界的翘楚&#xff0c;它一…

Linux下netstat命令详解

一、介绍 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具&#xff0c;它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。 二、输出…

hbase可视化工具_做数据可视化,三大热门BI工具试用总结

什么BI分析工具好用&#xff1f;今天通过3款BI产品Power BI、FineBI、亿信ABI为范例&#xff0c;进行对比分析。一、产品背景Power BI是微软的&#xff0c;14年15年开始初见苗头&#xff0c;之前主要是基于Excel的高级功能&#xff0c;包括Power Query&#xff0c;Power Pivot&…

Navicat导入数据库数据结构sql报错datetime(0)

错误发生情况&#xff1a; 将数据库从mysql5.7导出为sql&#xff0c;在mysql5.5上进行导入&#xff0c;报sql语句错误&#xff1a;datetime(0)… 错误发生原因 mysql5.7和mysql5.5的datetime、timestamp不兼容 mysql5.7导出的格式为 : datetime(0)&#xff0c;mysql5.5则无法…

文件服务器ping延时大,windowns 2008 ping 127.0.0.1延迟大的解决方法。

以查清是windowns 2008的BUG。文章编号: 979612 – 查看本文应用于的产品传输控制协议 (TCP) 环回滞后时间和在 Windows Server 2008、 Windows Server 2008 R2、 Windows Vista 和 Windows 7 中的用户数据报协议 (UDP) 滞后时间是比 TCP 环回延迟和 Windows Server 2003 中的 …

眉骨高者为大贵之相_男人此处“高大”,大富大贵,前途不可限量!!

原标题&#xff1a;男人此处“高大”&#xff0c;大富大贵&#xff0c;前途不可限量&#xff01;&#xff01;文/一得老师DC在沉寂多年后&#xff0c;终于崛起了&#xff01;三天破6.5亿&#xff0c;两周破16亿&#xff1b;《海王》爆了&#xff01;海王饰演者杰森莫玛&#xf…

IDEA Translation插件安装及设置鼠标悬浮提示的自动翻译

1、安装插件 Translation 2.设置鼠标悬浮提示 3.在代码界面鼠标悬停在方法上 就会自动翻译提示

在虚拟机中ftp服务器的配置,ftp服务器在虚拟机中配置文件

ftp服务器在虚拟机中配置文件 内容精选换一换由于主机中 /etc/ssh/sshd_config 配置文件中对服务器与客户端交互的活动心跳时间做出了限制&#xff0c;所以在一个ansible任务中如果在“规定时间”中主机没有任何响应则ssh服务断开(注&#xff1a;上述“规定时间”是指在/etc/ss…