迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Java Struts2 框架 java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误解决

作者:迹忆客 最近更新:2023/02/01 浏览次数:

java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误是我在最初学习 Java 的 Struts2 框架时碰到的第二个问题。该错误的具体堆栈信息如下

java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY
        at org.apache.logging.log4j.core.config.ConfigurationSource.<clinit>(ConfigurationSource.java:58)
        at org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32)
        at org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:74)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:581)

在网上查了资料,出现该问题的原因是

Apache Log4j2出现了“核弹级”漏洞,其中针对jdk8以上的修复方案常见为,将log4j-core升级为2.15.0版本; 升级后应用出现:java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY报错。

因为在 Struts2 中添加了 log4j-core-2.17.2.jar 包。而另一个用于 log4j 的jar包 log4j-api 我是直接用的 struts-2.5.30 中自带的 log4j-api-2.12.4.jar 包。它要低于 log4j-core 包的版本,因此这里的解决方案就是同步升级 log4j-api 包。只需要换成 log4j 包中的 log4j-api-2.17.2.jar 即可

log4j

升级了 log4j-api 包之后,未再出现 java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误。

相关文章

如何在 Java 中使用复合设计模式?

发布时间:2023/02/09 浏览次数:146 分类:算法

你好 Java 程序员,如果大家想了解 Java 中的 复合设计模式 ,例如如何实现复合设计模式以及何时使用它,那么来对地方了。 在本文中,我们将讨论 复合设计模式 。 复合设计模式(

Java 中的观察者设计模式

发布时间:2023/02/09 浏览次数:83 分类:算法

Java 中的 观察者设计模式 是一种基本的核心 Java 模式,其中 Observe 监视 Subject 的状态或属性的任何变化。 例如,公司向所有股东更新他们在这里做出的任何决定公司是主体,股东是观

Java 中的适配器 vs 装饰器 vs 门面 vs 代理设计模式

发布时间:2023/02/09 浏览次数:146 分类:算法

Adapter(适配器)、Decorator(装饰器)、Facade(门面) 和 Proxy(代理) 设计模式之间有一些惊人的相似之处,因为它们都使用组合和委托来解决问题。 适配器模式 包装一个接口,并将

如何在 Java 中使用适配器设计模式

发布时间:2023/02/08 浏览次数:143 分类:算法

Java 中的 适配器设计模式 ,也称为 Wrapper 模式,是另一个非常有用的 GOF 模式,它有助于弥合 Java 中两个类之间的差距。 根据四人组模式列表,适配器是一种结构模式,很像 Java 中的代

如何在 Java 中使用状态设计模式?

发布时间:2023/02/08 浏览次数:118 分类:算法

状态(State)设计模式 是一种行为模式。 状态模式 看起来类似于策略模式,但它有助于管理对象状态,从而使它们在不同状态下表现不同。 在这个例子中,我们将采用一个著名的面向对

如何在 Java 中实现命令设计模式

发布时间:2023/02/08 浏览次数:127 分类:算法

大家好,今天,我们将学习一种重要的设计模式,它经常被 Java 开发人员忽视。 是的,我说的是 命令模式 ,它可以帮助我们编写灵活、松散耦合的代码来实现应用程序中的操作和事件

Java 装饰器设计模式示例

发布时间:2023/02/08 浏览次数:105 分类:算法

大家好,如果想了解 Java 中的 装饰器设计模式 ,那么你来对地方了。由于设计模式在构建软件时非常重要,在任何核心 Java 面试中也同样重要,因此清楚地了解 Java 中的各种设计模式

Java 中的 java.lang.OutOfMemoryError 介绍

发布时间:2023/02/08 浏览次数:95 分类:编程语言

Java 开发中的每个人时不时都会遇到 java.lang.OutOfMemoryError ,Java 中的 OutOfMemoryError 是一个问题,在大多数情况下更多是由于系统的限制(内存)而不是由于编程错误,尽管在某些情况下

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便