java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory 标签: l

storm整合kafka过程中解决log4j冲突问题(Could not initialize class org.apache.log4j.Log4jLoggerFactory) 1、在storm整合kafka后,运行storm程序,报错如下: 12:47:09.110 [Thread-26-kafkaspout-executor[3 4]] ERROR org.apache.storm.util - Async loop died! java.lang.NoClassDefFoundError: Could not initialize class org.apach... 阅读详情

java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

标签: log4jslf4jlogback
  5114人阅读  评论(0)  收藏  举报
  分类:

目录(?)[+]

(一) 现象与解决方法

前些天在进行storm job的开发时候突然报了一个错误,记录一下

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory
   
  • 1
  • 1

当然我们的第一个反应是log4j这个包缺失(当然也有这种情况,需要首先确认),打开pom文件查看依赖,文件确实存在。

后经网上搜索加边上大牛指点发现:

log4j-over-slf4j.jar 和 slf4j-log4j12.jar 在同一个classpath下就会出现这个错误。

解决方法: 
将slf4j-log4j12.jar从相关的jar中排除

(二) 日志组件tips

那么问题来了,为啥会有这种冲突呢?在这里需要简单的说一下log的故事!

(1)common-logging、log4j、slf4j、logback

common-logging 
common-logging是apache提供的一个通用的日志接口;

在common-logging中,有一个Simple logger的简单实现,但是它功能很弱,所以使用common-logging,通常都是配合着log4j来使用;

common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库,并且尽可能找到一个”最合适”的日志实现类,如果判断有Log4j包,则使用log4j,最悲观的情况下也总能保证提供一个日志实现(SimpleLog)

log4j 
Apache的一个开放源代码项目,实现了输出到控制台、文件、 回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能,且配置比较简单;

slf4j 
slf4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。可以这么说,slf4j等于commons-logging,是各种日志实现的通用入口,会根据classpath中存在下面哪一个Jar来决定具体的日志实现库;

logback 
logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j。

(2)log4j-over-slf4j.jar 和 slf4j-log4j12.jar 在同一个classpath下为何出现错误?

在java领域日志工具中,最早得到广泛使用的是 log4j。那么为啥有common-logging的出现?上面已经介绍了common-logging只提供log的接口,其中具体的实现时动态绑定的,所以common-logging与log4j的结合比较多!但是随之也产生了一些问题,那就是common-logging的动态绑定有时候也会失败(说实在这个我也不懂,希望求解),在这样的背景下slf4j应运而生,slf4j与common-logging一样提供log接口,但是slf4j是通过静态绑定实现。

好的,先在来说slf4j-log4j12.jar是干啥的? 
slf4j提供 log 接口,其具体实现是根据放入程序的绑定器决定

 slf4j-XXX-version.jar
   
  • 1
  • 1

slf4j-log4j12.jar就是实现通过slf4j调度使用log4j。

那么log4j-over-slf4j.jar是干啥的勒?

在这里需要引入桥接器的概念,所谓的桥接器就是一个假的日志实现工具。

XXX-over-slf4j.jar
   
  • 1
  • 1

log4j-over-slf4j.jar就是桥接器,本来组件是通过log4j输出日志的,通过该桥接器被转到slf4j,slf4j在根据绑器把日志交给具体的日志实现工具。

如果log4j-over-slf4j.jar 和 slf4j-log4j12.jar共存的后果是什么?那就是两个踢球的人在互相传球,就是没人射门,陷入死循环。

这里写图片描述

参考博文: 
[1]http://blog.youkuaiyun.com/feng27156/article/details/36885387 
[2]http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html

海康威视Web3.0插件实战:快速部署摄像头实时预览方案 本文详细介绍了海康威视Web3.0插件的实战应用,包括快速部署摄像头实时预览方案的完整流程。从插件下载安装到摄像头连接配置,再到浏览器兼容性解决方案,帮助开发者和IT人员高效实现网页端监控功能。特别针对预览功能调优和多摄像头管理等高级应用提供了实用技巧。 阅读详情

相关推荐

Cherry Studio部署MCP服务报错全记录:从零解决‘Connection closed‘问题

本文详细记录了在Cherry Studio中部署MCP服务时遇到‘Connection closed’报错的完整排查与解决过程。文章从环境依赖(UV、Bun)的安装验证、绝对路径配置、网络镜像源设置,到服务端手动调试与Cherry Studio配置检查,提供了一套系统性的解决方案,帮助开发者彻底解决此类连接问题。

g9h0i1的博客 765

java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

(一) 现象与解决方法前些天在进行storm job的开发时候突然报了一个错误,记录一下Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory当然我们的第一个反应是log4j这个包缺失(当然也有这种情况,需要首先确认),打开pom文件查看依赖,文

Kevin.yang专栏 5万+

UE4-(IK)实现人物脚贴合地面解决斜坡上脚无旋转无法贴合地面问题

在斜面上脚陷入模型中,需要设置旋转值对脚的骨骼进行一个旋转。 解决思路:在射线检测中可以获取到检测点的法线方向,根据法线方向来计算出脚应该向哪个方向进行适当的旋转,在斜坡上,人物脚需要旋转的轴为x轴和y轴以便来贴合地面,z轴方向的旋转是不需要进行修改的。 如图所示,我们需要求得水平面与斜坡的夹角用来得出人物在x轴上的脚旋转量,在蓝图中提供反正切函数,反正切 = 锐角的邻边/对边 所以 反正切值(脚x轴值(roll)) = 法线Y轴值/法线Z轴 值。 现在将上图的人物想象成面向屏幕,脚需...

Stone的博客 3317

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFa

今天在搭建一个项目单元测试环境跑测试用例的时候遇到了致命错误: Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory 这个是什么情况? 翻看控制台输出信息看到一段: SLF4J: Detected both log4j-over-slf4j.j

lvjingWn的博客 1万+

嘉立创EDA实战:4层板叠层设计避坑指南(附阻抗计算技巧)

本文详细解析了嘉立创EDA在4层PCB叠层设计中的实战技巧与避坑指南,涵盖经典叠层方案对比、介质厚度选择、电源系统设计及高速信号完整性优化。特别介绍了阻抗计算工具的应用,帮助工程师在高速电路设计中实现性能与成本的最佳平衡。

sea99的博客 967

【从零开始玩量化7】easyTrader: 自动化(程序化)交易利器

前面的文章,我们介绍了数据获取工具AKShare, 量化回测工具backtrader等,这一篇,介绍程序化交易工具easyTrader。作者网名食灯鬼,目前项目在Github上的star数已经有6.7k。这可能是目前,开源能找到的,最好用的程序化交易库了。本文介绍了easyTrader的简单用法,这个包还有很多功能,后续再继续写文章探究。

量化投资助手的博客 1万+

java.lang.NoClassDefFoundError: Could not initialize class org.a*.poi.xssf.model.SharedStringsTable

poi-ooxml-schemas包引入错误,poi包5.*版本更改了名称:poi-ooxml-schemas 改为 poi-ooxml-lite/full;更新poi-ooxml-schemas包,poi-ooxml-lite包已经在poi包里,所以只添加poi-ooxml-full。hutool-all版本太低,升级到5.*hutool-all升级后,报。解析Excel正常;

u014259503的博客 4167

安装Quartus-II 13 和Modelsim

目录一、Quartus-II安装1.Quartus-II 13下载2.Quartus-II 13安装3.Quartus-II 13注册二、Modelsim安装 实验目的:安装Quartus-II 13 和Modelsim 实验环境:Windows10 参考资料:Quartus-II安装及使用 一、Quartus-II安装 1.Quartus-II 13下载 正点原子官方资料下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA 提取码:

qqq080的博客 8636

java 异常之java.lang.NoClassDefFoundError: Could not initialize class

异常处理之java.lang.NoClassDefFoundError

冷萃美式的博客 2万+

STM32F407上优化CAN总线通信(500kbps速率,多终端系统)需要从硬件设计、软件配置和实时性能三个方面进行综合优化

STM32F407上优化CAN总线通信(500kbps速率,多终端系统)需要从硬件设计、软件配置和实时性能三个方面进行综合优化

a_zxswer的博客 383

华为OD面试手撕真题 - 最大数

华为OD面试手撕真题 最大的数 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 343

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.poi.ooxml.POIXMLTyp

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.poi.ooxml.POIXMLTypeLoader at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86) at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLF...

somdip的博客 1万+

华为OD机考双机位C卷 - 天然蓄水库(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 天然蓄水库(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1741

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl

解决方案:   1、可能是包冲突,删除Java项目下的jsp-api.jar、servlet-api.jar包   2、在Tomcat中的conf下的context文件中加入<Loader delegate="true" />

千城墨白 4356

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java.lang.NoClassDefFoundError: Could not initialize class xxx 原因及解决方法

NoClassDefFoundError产生的原因有好几种,这里记录静态变量或静态块引起的。具体抛出的异常类似: java.lang.NoClassDefFoundError: Could not initialize class xxx JVM在加载类的时候,会初始化类里的静态变量,或执行静态块,如果这个时候抛出了异常,该类就会加载失败,那么以后任何使用到这个类的地方,都会抛出NoClassDefFoundError异常,如下面的例子: public class TestNoClassDefFoun..

u010548207的博客 7万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【总结】记一次log4j包冲突引发es类找不到的问题

ElasticSearch 7.17.5 相关操作报错,Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.client.RestHighLevelClient 。由于log4j和logback的冲突,导致该变量无法初始化,进一步导致RestHighLevelClient无法被加载成功。

Java高手真经 4512

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java.lang.NoClassDefFoundError: Could not initialize class异常

oClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。通过查找资料,容易发生此类异常的原因是:   - 类依赖的class或者jar不存在   - 类文件存在,但是存在不同的域中1. 对应的Class在java的classpath中不可用; 2. 你可能用jar命令运行你的程序,但类并没有在jar文件...

weixin_30448685的博客 1万+

hive连接报错-java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.security.UserG

hive连接报错-java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.security.UserGroupInformation 报错信息:无法初始化用户组 Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.se

一立方星空 1万+

Java 运行时发生 NoClassDefFoundError: Could not initialize class 的解决方法

在编译时没有异常的程序,在运行时抛出异常称 NoClassDefFoundError: Could not initialize class {类名}。 根据 Java 官方文档,NoClassDefFoundError 是由于 JVM 或 ClassLoader 实例为了调用某个类的方法或 new 类的新的实例,而试图加载该类的定义时,却无法找到其定义,而抛出的异常。需要注意,对于抛出该异常的情况,试图找到的类的定义在编译时存在,只是在运行时不知所踪。 NoClassDefFoundError 总的来

亦碎流年的博客 11万+

【异常解决】Java运行时发生 java.lang.NoClassDefFoundError: Could not initialize class com.iot.alarm.ProcAlar

是由于 JVM 或 ClassLoader 实例为了调用某个类的方法或 new 类的新的实例,而试图加载该类的定义时,却无法找到其定义,而抛出的异常。需要注意,对于抛出该异常的情况,试图找到的类的定义在编译时存在,只是在运行时不知所踪。实例导致的,那么我们就可以从类中找出与它有关的代码然后修改掉即可。对于我来说,这段代码我先注释掉了,不影响业务,或者是写出能代替的方案即可。或者如果是缺少类,则把缺少的类添加上即可。Springboot + JDK1.8,程序正常编译通过,运行时调用某个类后抛出异常。

No8g攻城狮的博客 3万+

java.lang.NoClassDefFoundError处理(我遇到的坑could not initialize class )

java.lang.NoClassDefFoundError处理(我遇到的坑could not initialize class  org.apache.xmlrpc.common.TypeFactoryImpl)  在网上查到各种引起的原因,找到最后发现是缺少依赖包造成的。 需要引入以下包:commons-httpclient,commons-logging,servlet-api,ws-c...

LIHONGHUA1的专栏 5193

Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.ReflectionUtil解决方法

Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.ReflectionUtil解决方法

qq_34760272的博客 8057

解决java.lang.NoClassDefFoundError: Could not initialize class方案

引用:https://blog.csdn.net/erlian1992/article/details/80683599 2018-06-12 10:03:34 [http-nio-8107-exec-3] ERROR com.huajin.assetserver.advice.ExpectionAdviceController - Handle request fail! org.sprin...

weidianlun的博客 2万+
上一篇: NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor 解决办法
下一篇: Mybatis提示Cannot find class [org.mybatis.spring.mapper.MapperScannerConfigurer]
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值