当我尝试读取 Excel 文件时,此错误显示:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.logging.log4j.Logger.atDebug()Lorg/apache/logging/log4j/LogBuilder;
指向这一行:
try (FileInputStream inputStream = new FileInputStream(configFile.getPath());
XSSFWorkbook workbook = new XSSFWorkbook(inputStream)) {
我尝试从 apache poi 中排除 log4j 依赖项,但它现在可以工作了:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
</dependency>
看来apache poi版本5.2.2使用或调用了log4j。我是否还需要将其包含在我的依赖项中?或者有没有正确的方法来排除 log4j?
org.apache.logging.log4j.Logger
是 org.apache.logging.log4j:log4j-api
的一部分。如果您排除 org.apache.logging.log4j:log4j-core
,它也会排除 org.apache.logging.log4j:log4j-api
您的类路径中需要有
log4j-api
。