SLF4J(W): Class path contains multiple SLF4J providers.

news2024/10/4 3:19:34

问题背景

最近在给某AI项目集成阿里的通义千问SDK,发现竟然有个奇怪的报错,仔细一看发现,我类上用的lombok的@Slf4j注释,阿里用的是org.slf4j.simple.SimpleServiceProvider,但是lombok用的是LogbackServiceProvider,所以就有冲突了,需要解决一下。我的思路是exclude 阿里的sdk包的org.slf4j.simple.SimpleServiceProvider。

SLF4J(W): Class path contains multiple SLF4J providers.
SLF4J(W): Found provider [org.slf4j.simple.SimpleServiceProvider@463b4ac8]
SLF4J(W): Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@765f05af]

详细报错

2024-10-03 22:23:45 JRebel: 
SLF4J(W): Class path contains multiple SLF4J providers.
SLF4J(W): Found provider [org.slf4j.simple.SimpleServiceProvider@463b4ac8]
SLF4J(W): Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@765f05af]
SLF4J(W): See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J(I): Actual provider is of type [org.slf4j.simple.SimpleServiceProvider@463b4ac8]
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.simple.SimpleLoggerFactory loaded from file:/C:/Users/Administrator/.m2/repository/org/slf4j/slf4j-simple/2.0.13/slf4j-simple-2.0.13.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.simple.SimpleLoggerFactory
	at org.springframework.util.Assert.instanceCheckFailed(Assert.java:592)
	at org.springframework.util.Assert.isInstanceOf(Assert.java:511)
	at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:396)
	at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:124)
	at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:238)
	at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138)
	at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136)
	at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:75)
	at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:54)
	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
	at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118)
	at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:54)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
	at com.softdev.system.Application.main(Application.java:9)

Process finished with exit code 1

解决方案

其实Slf4j的实现方案有两种,

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>请使用最新版本</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>请使用最新版本</version>
</dependency>

exclude掉阿里自带的slf4j-sample就可以了. 

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>dashscope-sdk-java</artifactId>
	<version>2.16.5</version>
	<exclusions>
		<exclusion>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
		</exclusion>
	</exclusions>
</dependency>

验证结果

项目启动成功 

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

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

相关文章

关于Vben Admin多标签页面缓存不生效的问题

情况说明 笔者在接手一个基于Vben Admin框架改造的vue3后台管理项目&#xff0c;客户要求在切换头部Tab页面时&#xff0c;不要刷新清空已经填写的表单页面或者表格。 然而&#xff0c;笔者根据Vben Admin的官方文档来配置多标签页面缓存后&#xff0c;页面每次切换后&#x…

Linux 应用层协议HTTP

文章目录 一、初始HTTP协议二、URL格式网络中怎么通过URL进行定位资源呢&#xff1f;编码和解码 三、HTTP的请求格式和响应格式HTTP的请求格式HTTP的响应格式HTTP的请求方法GET方法POST方法GET Vs PostHTTP的封装和分用文件流操作浏览器获得一个完整的网页流程 HTTP的状态码对3…

一、Linux下MySQL的安装与使用

文章目录 1. 基于docker安装mysql2. 字符集的相关操作2.1 修改MySQL5.7字符集2.2 各级别的字符集2.3 字符集与比较规则(了解)2.4 请求到响应过程中字符集的变化 3. SQL大小写规范3.1 Windows和Linux平台区别3.2 Linux下大小写规则设置3.3 SQL编写建议 4. sql_mode的合理设置4.1…

知识图谱入门——5:Neo4j Desktop安装和使用手册(小白向:Cypher 查询语言:逐步教程!Neo4j 优缺点分析)

Neo4j简介 Neo4j 是一个基于图结构的 NoSQL 数据库&#xff0c;专门用于存储、查询和管理图形数据。它的核心思想是使用节点、关系和属性来描述数据。图数据库非常适合那些需要处理复杂关系的数据集&#xff0c;如社交网络、推荐系统、知识图谱等领域。 与传统的关系型数据库…

端侧大模型系列 | 端侧AI Agent任务拆解大师如何助力AI手机?(简短版)

引言 简介 模型 实验 意义&前景: 总结 引言 今人不见古时月&#xff0c;今月曾经照古人。 小伙伴们好&#xff0c;我是微信公众号《小窗幽记机器学习》的小编&#xff1a;卖沙茶面的小女孩。 设想一下&#xff0c;你的智能手机不再只是"聪明"&#xff0…

12.梯度下降法的具体解析——举足轻重的模型优化算法

引言 梯度下降法(Gradient Descent)是一种广泛应用于机器学习领域的基本优化算法&#xff0c;它通过迭代地调整模型参数&#xff0c;最小化损失函数以求得到模型最优解。 通过阅读本篇博客&#xff0c;你可以&#xff1a; 1.知晓梯度下降法的具体流程 2.掌握不同梯度下降法…

力扣 中等 129.求根节点到叶子结点数字之和

文章目录 题目介绍解法 题目介绍 解法 法一&#xff1a;有返回值、 class Solution {public int sumNumbers(TreeNode root) {return dfs(root, 0);}public int dfs(TreeNode root, int x) {if (root null) {return 0;}x x * 10 root.val;if (root.left root.right) { //…

LC刷题专题:dfs、哈希表合集

自己刷题缺少分类思想&#xff0c;总是这里刷一道那里刷一道&#xff0c;以后建立几个专辑&#xff0c;然后自己新刷的同类型的题目都会即使更新上。 文章目录 690. 员工的重要性 690. 员工的重要性 2024-10-03 题目描述&#xff1a; 我第一次写并没有考虑到dfs&#xff0c;…

基于Arduino的L298N电机驱动模块使用

一.简介&#xff1a; L298N作为电机驱动芯片&#xff0c;具有驱动能力强&#xff0c;发热量低&#xff0c;抗干扰能力强的特点,一个模块可同时驱动两个直流电机工作&#xff0c;能够控制电机进行正转、反转、PWM调速。 说明&#xff1a; 1&#xff09;12V输入端口接入供电电压…

esp32开发环境搭建和烧录测试

文章目录 前言一、硬件环境1、esp32开发板。2、两个micro usb 数据线&#xff0c;一路用于供电&#xff0c;另一路用于烧录和调试3、喇叭&#xff0c; 淘宝上买的 4 欧姆 3 W扬声器 二、软件环境配置1、开发软件2、ESP-IDF简介下载 3、vscode安装配置1、安装vscode2、安装IDF插…

论文提纲怎么写?分享5款AI论文写作软件

在学术研究和写作过程中&#xff0c;撰写高质量的论文是一项挑战性的任务。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;AI论文写作工具逐渐成为帮助学者和学生提高写作效率的重要工具。这些工具不仅能够提高写作效率&#xff0c;还能帮助简化复杂的写作流程&#…

C++(string类的实现)

1. 迭代器、返回capacity、返回size、判空、c_str、重载[]和clear的实现 string类的迭代器的功能就类似于一个指针&#xff0c;所以我们可以直接使用一个指针来实现迭代器&#xff0c;但如下图可见迭代器有两个&#xff0c;一个是指向的内容可以被修改&#xff0c;另一个则是指…

【JNI】hello world

JNI&#xff0c;作为java和C/C的中间层&#xff0c;为在Java中调用C/C代码提供了便利。作为初学者&#xff0c;这里简单记录学习的过程。 本文所有的操作都在kali linux上进行&#xff0c;jdk环境以及gcc&#xff0c;g编译器需自行提前安装好 操作系统&#xff1a; jdk&#…

行为型模式-命令-迭代-观察者-策略

命令模式 是什么 将一个请求封装成为一个对象, 从而可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及可以撤销的操作 实例 请求封装成为对象 //用来声明执行操作的接口 public abstract class Command { protected Receiver receiver; public Comma…

【网络原理】Udp报文结构,保姆级详解,建议收藏

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 一、UDP报文格式 ​ ​ 可以看出UDP报文主要由报头和正文两部分构成&#xff0c;报头存储了此次报文的一些重要信息&#xff0c;而正文才是真正需要传输的内容。本篇文章就主要…

【Kubernetes】常见面试题汇总(五十二)

目录 116. K8S 集群服务暴露失败&#xff1f; 117.外网无法访问 K8S 集群提供的服务&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-…

Windows 环境上安装 NASM 和 YASM 教程

NASM 和 YASM NASM NASM&#xff08;Netwide Assembler&#xff09;是一个开源的、可移植的汇编器&#xff0c;它支持多种平台和操作系统。它可以用来编写16位、32位以及64位的代码&#xff0c;并且支持多种输出格式&#xff0c;包括ELF、COFF、OMF、a.out、Mach-O等。NASM使用…

复习HTML(进阶)

前言 上一篇的最后我介绍了在表单中&#xff0c;上传文件需要使用到 method属性 和enctype属性。本篇博客主要是详细的介绍这些知识 <form action"http://localhost:8080/test" method"post" enctype"multipart/form-data"> method属性…

SQL Inject-基于报错的信息获取

常用的用来报错的函数 updatexml() : 函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。 extractvalue(): 函数也是MYSQL对XML文档数据进行查询的XPATH函数。 floor(): MYSQL中用来取整的函数。 思路&#xff1a; 在MySQL中使用一些指定的函数来制造报错&am…

YOLOv8改进 - 注意力篇 - 引入SEAttention注意力机制

一、本文介绍 作为入门性篇章&#xff0c;这里介绍了SEAttention注意力在YOLOv8中的使用。包含SEAttention原理分析&#xff0c;SEAttention的代码、SEAttention的使用方法、以及添加以后的yaml文件及运行记录。 二、SEAttention原理分析 SEAttention官方论文地址&#xff1…