龙空技术网

log4j2升级报错记录

杨彬37178244 266

前言:

现在我们对“aprnotfoundapache”可能比较关怀,大家都想要剖析一些“aprnotfoundapache”的相关资讯。那么小编在网摘上网罗了一些有关“aprnotfoundapache””的相关文章,希望我们能喜欢,我们一起来了解一下吧!

Q: 升级后出现异常 org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalidbytetag in constant pool

A: 参考, 升级tomcat ,这个是tomcat的bug,可能造成日志无法打印

建议升级tomcat解决
tomcat8 升级到8.5.32 及以上tomcat7 升级到7.0.76 以上 或者  8.5.32及以上(需要jdk1.7以上版本)
tomcat7 升8 如果碰到 java.lang.ClassNotFoundException: org.apache.catalina.core.JasperListener 参考 解决

Q:升级 >= 2.17.1以后,项目启动不起来,引用的disruptor报错,这个怎么解决?

A:除了升级log4j-core之外,还需要升级log4j-api、log4j-jcl、log4j-slf4j-impl到2.17.1、 slf4j-api 升级到1.7.32,disruptor升级到3.4.4。

ES删除 指定类

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class,建议

zip -d 从指定包里删除指定文件

Log4j2

ຉ҅名词解释

PoC:Proof of Concept,概念验证,⿊客圈中POC指观点验证程序

RCE:Remote Command/Code Execute,远程命令(代码)执⾏. 攻击者直接向后台服务器远程注、

JNDI:Java Naming and Directory Interface,Java命名和⽬录接⼝

如上类加载有三种方式,分别加载不存在类二进制.class文件,会分别抛出NoClassDefFoundError或ClassNotFoundException,具体说明如下

1)直接创建对象MyObject obj=new MyObject() - 如当前ClassLoader无法找到MyObject类,则抛出NoClassDefFoundError

2)通过Class.forName()方法动态加载,Class clazz = Class.forName("MyObject");Object obj =clazz.newInstance();通过反射加载类型创建对象实例,如无法找到MyObject类,则抛出ClassNotFoundException

3)通过ClassLoader.loadClass()方法动态加载,Class clazz = classLoader.loadClass("MyObject");Object dog =clazz.newInstance(); 如无法找到MyObject类,则抛出ClassNotFoundException

注:对于1和2方式都是使用当前执行类加载器进行加载(this.getClass.getClassLoader),3方式是可以让用户自定义的classLoader进行加载

标签: #aprnotfoundapache