当前位置: 首页 > 知识库问答 >
问题:

异常线程"main"java.lang.NoSuchFieldError:EMPTY_BYTE_ARRAY

莘钧
2023-03-14

我正在学习selenium并尝试运行以下代码,但它引发了异常。NoSuchFieldError:空字节数组。请帮助我理解这个简单的程序出了什么问题。

package newpackage;

import java.io.FileInputStream;
import java.io.IOException

import org.apache.poi.xssf.usermodel.*;


public class spp {      

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

    String excelFilePath = "./src/DataFiles/GMD.xlsx";
    FileInputStream inputStream = new FileInputStream(excelFilePath);
    
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
    XSSFSheet sheet = workbook.getSheetAt(0);
    int rows = sheet.getLastRowNum();
    System.out.println(rows);   
    
}
}

控制台:

异常线程"main"java.lang.NoSuchFieldError:EMPTY_BYTE_ARRAY

at org.apache.logging.log4j.core.config.ConfigurationSource.<clinit>(ConfigurationSource.java:56)
at org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32)
at org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:85)
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:196)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)
at org.apache.poi.ooxml.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:56)
at newpackage.spp2.main(spp2.java:17)

共有1个答案

邹胜泫
2023-03-14

好的,所以这与您正在加载的excel文件或(可能)您的应用程序代码无关。

发生的事情是当

org.apache.logging.log4j.core.config.ConfigurationSource 

正在初始化。。。在log4j 2的深处。x实现代码。。。它遇到了二进制兼容性问题。正在执行的ConfigurationSource的代码取决于名为

org.apache.logging.log4j.core.util.Constants

并试图在该类中使用一个名为EMPTY_BYTE_ARRAY的常量。编译ConfigurationSource时,该字段已存在。但是它不存在于类加载器发现的Constance版本中...碰巧与log4j 2. x源代码的最新版本相匹配。

这很奇怪。

更奇怪的是,配置源代码和常量应该来自同一个依赖... log4j核心。JAR依赖关系。所以很难理解他们怎么会不合拍。我能想到的最好的情况是,有人(在您的组织中)已经完成了修补log4j 2. x漏洞和破坏二进制兼容性的笨拙工作。

这有什么印象吗?你得到log4j核心了吗?JAR直接从Maven Central使用最新的官方Apache发布工件?还是你从别的地方捡的?请注意,如果您正在通过组织Maven镜像获取您的依赖项,那么管理镜像的人员可能已经创建了...嫌疑犯...罐子。

 类似资料:
  • 最近我正在学习Spring框架。所以我正在尝试检查依赖注入在Spring框架中的工作原理。因此,我创建了一个新的java项目并使用基于构造函数XML的配置练习依赖注入代码。运行我的项目后,我收到了这个错误...... 类路径资源[com/mir00r/beans.XML]的XML文档中的第24行无效;嵌套异常为组织。xml。萨克斯。SAXParseException;行号:24;列数:9;cvc复

  • 我正在看一张桌子。其中一列包含压缩(二进制)数据。我正在解压缩这些数据并存储在另一个RDD中。它给出了以下错误: 线程“main”组织中出现异常。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段2.0中的任务0失败1次,最近的失败:阶段2.0中的任务0.0丢失(TID 2,localhost,executor driver):java。util。同时发生的ExecutionEx

  • 我正在尝试创建一个实用程序类,以使用 java.util.扫描仪从标准控制台获取输入 在另一个类中调用静态方法时, 工作正常,但是下面的方法 会导致异常。 运行此命令会导致以下异常 我注意到的有趣的事情是,如果我注释掉第一个输入过程,数组输入工作正常。

  • 问题内容: 每当我运行此命令时,该函数就可以正常使用。当我选择洞穴时,消息会每隔2秒弹出一次,然后当它越过该部分时,就会出现错误: 我已经尝试过和,并且在该方法中使用时,出现了很多错误。当我在方法中使用时,它不接受我的输入。 当我在该方法中使用时,它不接受我的字符串输入,而直接进入另一个游戏,但是布尔值返回并且它无限地发送垃圾邮件“ Which Cave …”。 我已经阅读了错误报告,以及类似问题

  • 问题内容: 我正在开发一个访问数据库的项目,但是我遇到了一些问题。我尝试使用hibernate3.2和4.52,但是它不起作用。 例外是在这行代码中 问题答案: 您需要在类路径中检查类org.apache.log4j.Level的冲突版本并进行解决。版本1.2.12或更高版本的log4j jar中提供了TRACE级别。

  • 我最近安装了intellij IDEA 14.0,为了确保一切正常,我创建了一个简单的Hello World程序。我不明白为什么输出不正确,为什么会出现这个错误。如果有人能帮忙,那就太好了。 以下是程序: 这是错误: