You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以Java应用运行类时出现Log4j2日志实现未找到错误求助

Log4j2找不到日志实现的问题排查与解决

在Eclipse中以"Run as Java Application"运行DataDriven.java类时,出现错误提示:
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
已在pom.xml中添加/移除log4j-core依赖(版本3.0.0-beta1),问题仍未解决。

相关代码文件

DataDriven.java

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class DataDriven {

    public static void main(String[] args) throws FileNotFoundException {
        FileInputStream fis=new FileInputStream("C://Users//Shreyas Lembhe//OneDrive//Documents//DataDemo.xlsx");
        XSSFWorkbook workBook=new XSSFWorkbook();
        
        int sheets=workBook.getNumberOfSheets();
        for(int i=0;i<sheets;i++) {
            if(workBook.getSheetName(i).equalsIgnoreCase("testdata")) {
                XSSFSheet sheet=workBook.getSheetAt(i);
                //Identify test case column by scanning the entire 1st row
                Iterator<Row> rows=sheet.iterator();
                Row firstRow=rows.next();
                Iterator<Cell> ce=firstRow.cellIterator();//Row is a collection of cells
                int k=0;
                int column = 0;
                while(ce.hasNext()) {
                    Cell value=ce.next();
                    if(value.getStringCellValue().equalsIgnoreCase("testcases")) {
                        column=k;
                    }
                    k++;
                }
                System.out.println(column);
            }
        }
    }

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Framework</groupId>
    <artifactId>ExcelDriver</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>
        <!--
        https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>3.0.0-beta1</version>
        </dependency>


    </dependencies>
</project>

问题原因及解决方案

1. Log4j版本不兼容

你用的log4j-core是3.0.0-beta1预览版,而Apache POI 5.2.5依赖的是Log4j 2.x系列,版本不匹配会导致类路径冲突,无法正确加载日志实现。

解决:
替换为稳定的Log4j 2.x版本,比如2.20.0,同时要加log4j-api依赖(Log4j 2.x中api和core是分离的):

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>

2. Eclipse Maven依赖未更新

加完依赖后,Eclipse可能没自动更新类路径,导致依赖没被加载。

解决:

  • 右键项目 → Maven → Update Project,勾选"Force Update of Snapshots/Releases"后点OK。
  • 或者清理项目:Project → Clean,选当前项目后清理。

3. POI依赖冲突

你同时加了poi-ooxml(5.2.5)和poi-ooxml-schemas(4.1.2),版本不一致会引发依赖冲突,间接影响日志组件加载。

解决:
删掉poi-ooxml-schemas依赖,因为poi-ooxml 5.x版本已经包含了所需的schemas,不需要单独引入。

4. 缺少Log4j配置文件

Log4j 2.x需要配置文件(比如log4j2.xml、log4j2.properties)才能正常工作,不然会默认用SimpleLogger。

解决:
在src/main/resources下创建log4j2.xml文件,示例配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

5. 运行配置类路径问题

Eclipse的Run Configuration可能没正确包含Maven依赖。

解决:

  • 打开Run Configurations → 找到你的Java Application配置 → 切换到Classpath标签页。
  • 确保"Maven Dependencies"在User Entries里,如果没有,点Add → Library → Maven Dependencies添加。

内容的提问来源于stack exchange,提问作者Shreyas Lembhe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:24:53