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

Vertx 4.4.2集成Log4j2遇Maven依赖冲突及启动报错求助

解决Vert.x 4.4.2中Log4j2 Maven依赖冲突及启动报错问题

问题背景

在Vert.x 4.4.2项目的pom.xml中手动添加了Log4j2 2.20.0版本依赖:

<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>

出现两个问题:

  • 代码检查工具提示依赖冲突:Dependency conflict in log4j-core: org.apache.logging.log4j:log4j-api:2.17.1 conflict with 2.20.0,但找不到2.17.1版本的定义位置。
  • 服务器启动时报错:ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...

解决步骤

1. 定位冲突依赖的来源

执行Maven依赖树命令,找出引入log4j-api 2.17.1的间接依赖:

mvn dependency:tree

在输出结果中搜索log4j-api:2.17.1,即可看到它是由哪个第三方依赖(比如Vert.x自身组件)引入的。

2. 排除冲突的旧版本依赖

在手动添加的Log4j2依赖中,排除间接引入的旧版本log4j-api。推荐在log4j-core依赖中添加排除规则(log4j-core本身依赖log4j-api,排除后会使用指定的2.20.0版本):

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

同时保留手动添加的log4j-api 2.20.0依赖,确保项目使用统一版本。

3. 验证依赖并清理缓存

  • 再次执行mvn dependency:tree,确认所有log4j-api和log4j-core的版本均为2.20.0,无冲突。
  • 清理Maven本地缓存并重新构建,避免缓存的旧依赖干扰:
mvn clean install -U

4. 确认类路径完整性

  • 检查IDE运行配置,确保Maven依赖已正确加载到类路径中,log4j-core-2.20.0.jar存在。
  • 如果是打包部署,验证生成的包中包含log4j-core文件:
jar tf target/your-project.jar | grep log4j-core

原因说明

依赖冲突会导致Maven依赖解析异常,可能出现类路径中同时存在多个版本的log4j-api,甚至间接导致log4j-core无法被正确识别。通过排除旧版本并强制使用统一版本,可解决类加载异常和启动报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:13:25