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

线程“main”java中出现异常。lang.NoSuchFieldError:空字节数组[关闭]

能修谨
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:空字节数组

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

并试图在该类中使用一个名为空字节数组的常量。编译ConfigurationSource时,该字段存在。但是类加载器发现的常量版本中不存在。。。这恰好与log4j 2的最新版本相匹配。x源代码。

这很奇怪。

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

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

 类似资料: