linux slf4j找不到,SLF4J错误消息

2023-05-16

在本章中,我们将讨论在使用SLF4J时获得的各种错误消息或警告以及这些消息的原因/含义。

无法加载类“org.slf4j.impl.StaticLoggerBinder”。

这是在类路径中没有提供SLF4J绑定时引起的警告。

以下是完整的警告 -

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further

details.

要解决此问题,需要添加任一日志框架绑定。本教程上一小节对此进行了解释说明。

注 - 这种情况发生在SLF4J的版本中,介于1.6.0和1.8.0-beta2之间。

No SLF4J providers were found

在slf4j-1.8.0-beta2中,上述警告更清楚地说“未找到SLF4J提供商”。

以下是完整的警告 -

SLF4J: No SLF4J providers were found.

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.

Classpath包含针对1.8之前的slf4j-api版本的SLF4J绑定

如果使用的是SLF4J 1.8版本,并且在类路径中具有以前版本的绑定但没有1.8的绑定,则会看到如下所示的警告。

SLF4J: No SLF4J providers were found.

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.

SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions prior to

1.8.

SLF4J: Ignoring binding found at

[jar:file:/C:/Users/maxsu/Desktop/Latest%20Yiibai/SLF4J%20Tutorial/

slf4j-1.7.25/slf4j-jdk14-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#ignoredBindings for an explanation.

NoClassDefFoundError: org/apache/commons/logging/LogFactory

如果正在使用slf4j-jcl,并且类路径中只有slf4j-jcl.jar,将得到一个例外(异常),例如下面给出的例外(异常)。

Exception in thread "main" java.lang.NoClassDefFoundError:

org/apache/commons/logging/LogFactory

at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:77)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)

at SLF4JExample.main(SLF4JExample.java:8)

Caused by: java.lang.ClassNotFoundException:

org.apache.commons.logging.LogFactory

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

... 3 more

要解决此问题,需要将commons-logging.jar添加到类路径中。

Detected both jcl-over-slf4j.jar AND bound slf4j-jcl.jar on the classpath..

绑定slf4j-jcl.jar将slf4j logger的调用重定向到JCL,jcl-over-slf4j.jar将JCL logger的调用重定向到slf4j。因此,不能在项目的类路径中同时拥有这两者。如果这样做,会得到一个例外(异常),例如下面给出的(异常)。

SLF4J: Detected both jcl-over-slf4j.jar AND bound slf4j-jcl.jar on the class

path, preempting StackOverflowError.

SLF4J: See also http://www.slf4j.org/codes.html#jclDelegationLoop for more

details.

Exception in thread "main" java.lang.ExceptionInInitializerError

at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:71)

at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:42)

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 SLF4JExample.main(SLF4JExample.java:8)

Caused by: java.lang.IllegalStateException: Detected both jcl-over-slf4j.jar

AND bound slf4j-jcl.jar on the class path, preempting StackOverflowError. See

also http://www.slf4j.org/codes.html#jclDelegationLoop for more details.

at org.slf4j.impl.JCLLoggerFactory.(JCLLoggerFactory.java:54)

... 7 more

要解决此问题,请删除其中一个jar文件。

Detected logger name mismatch

可以通过以下方式创建Logger对象:

将要创建的记录器的名称作为参数传递给getLogger()方法。

将类作为参数传递给此方法。

如果通过将类作为参数传递来创建记录器工厂对象,并且已将系统属性slf4j.detectLoggerNameMismatch设置为true,那么作为参数传递给getLogger()方法的类的名称和使用类应该相同,否则将收到以下警告 -

“Detected logger name mismatch”

请考虑以下示例。

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class SLF4JExample {

public static void main(String[] args) {

System.setProperty("slf4j.detectLoggerNameMismatch", "true");

//Creating the Logger object

Logger logger = LoggerFactory.getLogger(Sample.class);

//Logging the information

logger.info("Hi Welcome to Yiibai.com");

}

}

在这里,将slf4j.detectLoggerNameMismatch属性设置为true。使用的类的名称是SLF4JExample,传递给getLogger()方法的类名是Sample,因为它们都不相等,将会收到以下警告。

SLF4J: Detected logger name mismatch. Given name: "Sample"; computed name:

"SLF4JExample".

SLF4J: See http://www.slf4j.org/codes.html#loggerNameMismatch for an

explanation

Dec 10, 2019 10:23:00 PM SLF4JExample main

INFO: Hi Welcome to Yiibai.com

注 - 它在slf4j 1.7.9之后发生

Classpath contains multiple SLF4J bindings.

应该在类路径中只有一个绑定。如果有多个绑定,将收到一个警告,列出绑定及其位置。

假设,如果在类路径中有绑定slf4j-jdk14.jar和slf4j-nop.jar,将收到以下警告。

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in

[jar:file:/C:/Users/Yiibai/Desktop/Latest%20Yiibai/SLF4J%20Tutorial/

slf4j-1.7.25/slf4j-nop-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in

[jar:file:/C:/Users/Yiibai/Desktop/Latest%20Yiibai/SLF4J%20Tutorial/

slf4j-1.7.25/slf4j-jdk14-1.7.25.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 [org.slf4j.helpers.NOPLoggerFactory]

Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path

要将log4j logger调用重定向到slf4j,需要使用log4j-over-slf4j.jar绑定,如果要将slf4j调用重定向到log4j,则需要使用slf4j-log4j12.jar绑定。

因此,不能在类路径中同时拥有这两者。如果这样做,将收到以下异常。

SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the

class path, preempting StackOverflowError.

SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more

details.

Exception in thread "main" java.lang.ExceptionInInitializerError

at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:72)

at org.slf4j.impl.StaticLoggerBinder.(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.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)

at SLF4JExample.main(SLF4JExample.java:8)

Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar

AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError.

See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux slf4j找不到,SLF4J错误消息 的相关文章

  • 如何检查程序是否在 Windows 上的 Ubuntu 上的 Bash 中运行,而不仅仅是普通的 Ubuntu?

    非常简单 确定您所使用的操作系统的通常位置似乎与 Ubuntu for Windows 上的普通 Ubuntu 相同 例如uname a与本机 GNU Linux 安装相同并且 etc os version与 Ubuntu Trusty T
  • ModemManager:mmcli 获取信号强度

    我无法检索 Sierre Wireless MC7304 上的信号强度 另外通过 mmcli 发送 AT 命令似乎不起作用 sudo mmcli m org freedesktop ModemManager1 Modem 0 signal
  • 将文件夹中结构化的预构建文件集添加到 android out 文件夹

    我为arm编译了glibc 这与Android glibc或bionic C不同 因为我编译的glibc环境将有助于提供更多api 现在我可以在 Android 运行时将 glibc 环境复制到 system 文件夹中 并且在执行 chro
  • 无法在 Linux 中阻止从命名管道 (FIFO) 读取

    很奇怪 我似乎无法完成这项工作 这是我的架构 我有一个命名管道 它将在永远运行 root读取器进程和多个应用程序编写器进程 读者进程必须是blocking当作家们在nonblocking 因此 这就是我在阅读器进程中所做的 该进程将运行ro
  • DHCP 服务器将任何 url 重定向到登陆页面

    我有一个 Linux DHCP 服务器 我需要将所有网络流量重定向到一个登陆页面 该页面将包含有关如何在网络上注册计算机的说明 无论用户输入什么 URL 都需要将用户重定向到网页 在 DHCP 服务器上 即 用户输入 google com
  • 如何将目录路径转换为唯一的数字标识符 (Linux/C++)?

    我正在研究获取目录 文件夹 并派生某种形式的唯一数字标识符的方法 我研究了 字符串到哈希 方法 但是 鸽子洞原理 http www codinghorror com blog 2007 12 hashtables pigeonholes a
  • Python 在打开套接字时可以选择哪个网络适配器吗?

    运行 python 应用程序的目标计算机将具有三个可用的网络接口 一般来说 所有三个网络都会有很大不同 但是三个网络中的两个可能位于相似的网络上 在下面的示例中 我无法控制 ETH 2 上的目标地址 因为它是预先配置的系统 因此我被迫以编程
  • 如果执行 shell 失败,jenkins 构建不会失败

    作为构建过程的一部分 我运行 git commit 作为执行 shell 步骤 但是 如果工作区中没有任何更改 Jenkins 将导致构建失败 这是因为当没有要提交的更改时 git 返回错误代码 如果是这种情况 我想要么中止构建 要么将其标
  • 如何保护Linux中的堆内存?

    我想将一块堆内存设置为只读 为此我尝试过memalign with mprotect 但是从 memalignment 中我能得到什么 memalign 从进程堆中分配内存 我想将堆的某些部分设为只读 有什么帮助吗 malloc gt mm
  • Qt 的 sysroot 和前缀选项的实际示例是什么

    我正在查看可以运行的所有选项configureQt 提供的脚本 特别是 qt everywhere opensource src 5 2 0 经过大量搜索后 我确定这些东西充其量记录很少 所以我希望我能得到一些帮助 当我查看描述时prefi
  • 不同 Perl 安装造成的混乱

    我尝试升级 Perl 却把我的电脑搞得一团糟 我目前运行的是 RHEL6 5 64 位 事情是这样的 我安装了 perl 5 10 1 并且运行良好 这是安装好的 我可以从百胜看到它 我想安装 Padre 一个 Perl IDE 但这至少需
  • 如何找到某个命令的目录?

    我知道 当您使用 shell 时 唯一可以使用的命令是可以在 PATH 上设置的某些目录中找到的命令 即使我不知道如何查看 PATH 变量上的目录 这是另一个可以回答的好问题 我想知道的是 我来到 shell 并写道 lshw 我想知道 s
  • 在 Kali (Debian) 中安装 mono-devel 时,软件包具有未满足的依赖关系

    我尝试安装 mono devel 并输入sudo apt get mono devel在终端中 但失败了 得到以下结果 apt get install mono devel Reading package lists Done Buildi
  • Linux 上的 Chrome - 查询浏览器以查看打开了哪些选项卡?

    我在 Ubuntu Linux 上运行 Chromium 开源 chrome 版本 我可以编写一个程序来查看我打开了哪些选项卡吗 我想编写一个程序来监控我在事情上花费了多少时间 是否有命令行程序 某种调用 chromium browser
  • 为 bash 脚本创建应答文件

    我想为别人的 bash 脚本创建一个应答文件 当您运行 bash 脚本时 第一次安装该软件时 系统会询问您 5 个问题 我用的是yes script命令并且有效 它会自动应答yes对所有问题 不过我还是想回答一下no对于最后一个问题 有办法
  • Linux下对多个文件进行排序

    我有多个 很多 文件 每个都非常大 file0 txt file1 txt file2 txt 我不想将它们合并到一个文件中 因为生成的文件将超过 10 场演出 每个文件中的每一行都包含一个 40 字节的字符串 现在字符串的排序相当好 大约
  • grails 中的 log4j:在附加程序配置中使用变量时打印错误

    我在 grails 2 3 4 中使用 slf4j DailyRollingFileAppender 当我尝试使用变量作为 文件 参数的一部分时 grails 总是在应用程序启动时打印一些错误日志 但是我的应用程序的日志消息可以按预期打印到
  • c 中的分叉和管道过程

    所以我有一个项目要做 但我完全被难住了 我花了十个小时却一无所获 我并不是特别想要答案的代码 但是一些伪代码和正确方向的良好提示将有帮助 它分叉多个进程 k 命令行参数 通过管道连接 每个进程都连接到下一个进程 最后一个进程连接到第一个进程
  • Java Linux 非阻塞套接字超时行为

    我有一个 Java 非阻塞服务器 它跟踪选择器中的所有套接字通道 然后我与服务器建立 500 个连接并定期发送数据 服务器接收到的每条数据都会回显给客户端 问题来了 测试工作了几个小时 然后突然逐渐地 服务器管理的所有套接字在尝试读取数据时
  • 即使退出命令后,Shell 脚本仍继续运行

    我的shell脚本如下所示 bin bash Make sure only root can run our script EUID ne 0 echo This script must be run as root 1 gt 2 exit

随机推荐

  • iOS开发之ARC MRC混编

    Xcode5之后 xff0c 新建iOS工程 xff0c 默认都是ARC模式 xff0c 但是有时候我们的项目中需要用到一些第三方框架 xff0c 我们下载下来却发现是非ARC的 xff0c 这时候我们需要进行ARC和MRC混编 第一种方式
  • 二分法猜数字

    二分法 arr 61 range 10000000 start 61 0 end 61 len arr 1 res 61 776575 count 61 0 print arr index res while True count 61 c
  • jenkins报错jdk1.8/jre/lib/amd64/libawt_xawt.so

    环境 Ubuntu14 04 x64 jenkins 2 32 1 错误1 AWT is not properly configured on this server Perhaps you need to run your contain
  • [转载]最小矩形(rec1)的解题报告

    百度之星2009大赛的第二场有一道和此相关的题目 xff0c 如果看透这篇文章应该好写了 xff0c 不过可惜我事后才看到 xff0c 郁闷啊 xff01 xff01 还是要多看看书 原文 xff1a http www pmit com c
  • ftp权限设置大全!!!

    1 xff0e 登录和对匿名用户的设置 write enable 61 YES 是否对登录用户开启写权限 属全局性设置 默认NO local enable 61 YES 是否允许本地用户登录FTP服务器 默认为NO anonymous en
  • Vmware-虚拟中的linux如何增加硬盘(转)

    启动虚拟机软件VMware后 xff0c 点机VM菜单选择Setting xff0c 然后在弹出地菜单中选择 xff1a Add命令进行添加硬盘操作 完成后启动虚拟机 1 建立分区 fdisk l查看磁盘分区情况 此时你会发现多了一个 de
  • depot_tools download CPID client for windows 设置代理

    Downloading CIPD client for windows amd64 from https chrome infra packages appspot com Failed to download the file check
  • linux查看glibc命令,centos怎么看glibc版本 Linux查看glibc版本方法

    日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞 xff0c 影响版本为Glibc 2 2到2 17 xff0c 包含2 2和2 17版本 如果您正在使用Linux服务器的话 xff0c 快看看你
  • 2范数和F范数的区别

    2范数和F范数是不同的 2范数表示矩阵或向量的最大奇异值 xff0c max svd X 而 F范数表示矩阵所有元素平方和的开方根 sqrt x i j X x i j 2 转载于 https www cnblogs com yinwei
  • Ubuntu ftp服务器搭建 + UltraEdit编辑FTP文件

    0 前言 xff1a xff08 请无视 xff09 最近在写一个Linux脚本 xff0c 在电脑装了Ubuntu的虚拟机来测试脚本效果 xff1b 可是用vim编辑脚本实在是太蛋疼 xff0c 于是就想到UltraEdit编写 xff0
  • Windows远程桌面多用户登录的问题

    RDP WRAPPER 同时登录 多用户补丁 解决系统更新导致无法多用户登录的问题 问题描述 xff1a 安装最新的Windows系统更新补丁后 xff0c 使用RDP Wrapper多用户补丁的共享主机不支持多用户登录 系统会提示登录远程
  • mac man汉化方法

    https www jianshu com p 615a0a46193a utm campaign 61 maleskine amp utm content 61 note amp utm medium 61 seo notes amp u
  • 常见开发语言擅长领域

    Python xff1a 机器学习 xff0c 数据科学还有Web开发 JavaScript xff1a Web开发 xff08 前端和后端 xff09 和游戏开发 Java xff1a 移动Android应用程序开发 xff0c 企业应用
  • 【Arch安装】

    Arch安装 不完整 xff0c 凭记忆补充 1 xff0c 制作安装介质 xff08 请跳转链接 xff1a https www archlinux org download xff09 2 xff0c 从UEFI模式启动后 xff0c
  • 关于 systemctl --user status 报错的问题

    关于 systemctl user enable mpd 报错 xff1a Failed to connect to bus No such file or directory 因为arch脚本中 xff0c systemctl 是 sud
  • RNA-Seq比对软件HISAT2的用法

    参考网址 xff1a http blog sciencenet cn blog 759995 990471 html 感谢原作者 转载于 https www cnblogs com lmt921108 p 7442839 html
  • curl: (1) Protocol 'http not supported or disabled in libcurl

    在windows中使用curl的时候 xff0c 命令为 curl 39 http localhost 9200 pretty 39 出现这个报错 curl 1 Protocol 39 http not supported or disab
  • Linux日志服务器配置

    配置日志服务器 环境 xff1a tibet xff1a 10 11 3 57 gaplinux xff08 日志服务器 xff09 xff1a 10 11 3 3 修改tibet上的 etc hosts xff0c 增加如下代码 xff1
  • Ubuntu16.04下配置ssh免密登录

    Ubuntu16 04下配置ssh免密登录 环境准备 xff1a 新建两台虚拟机 xff0c 而且两台虚拟机上都装有Ubuntu16 04的系统 xff0c 使两台虚拟机之间保持互通状态 分别为两台虚拟机命名为A B 假设我们要使A虚拟机免
  • linux slf4j找不到,SLF4J错误消息

    在本章中 xff0c 我们将讨论在使用SLF4J时获得的各种错误消息或警告以及这些消息的原因 含义 无法加载类 org slf4j impl StaticLoggerBinder 这是在类路径中没有提供SLF4J绑定时引起的警告 以下是完整