Java Struts2 框架 java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误解决
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-api 包之后,未再出现 java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误。
相关文章
C# 中的 Java final 等效关键字
发布时间:2024/02/01 浏览次数:73 分类:编程语言
-
C# 中有两个不同的关键字,它们等效于 Java 中的 final 关键字,用于类和函数的 sealed 关键字以及用于字段的 readonly 关键字。本教程将讨论与 Java 中的 final 关键字等效的 C# 关键字。Java final 关键
Java 到 Python 的转换器
发布时间:2023/12/20 浏览次数:205 分类:Python
-
本教程讨论如何将 Java 代码转换为 Python 代码。使用外部工具将代码从 Java 转换为 Python
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。