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

无法构建Google Cloud Endpoints示例项目,报错Log4JLogger未实现Log接口

解决App Engine Endpoints Frameworks构建报错:Class org.apache.commons.logging.impl.Log4JLogger does not implement Log

我之前在搭建这个示例项目时也踩过同样的坑,这个错误本质是日志依赖冲突——commons-logging和log4j的版本不兼容,导致JVM识别不到实现类和接口的对应关系。下面是几个亲测有效的解决步骤:

方法1:排除冲突依赖并手动指定兼容版本

如果用的是Maven,打开项目根目录的pom.xml,找到endpoints-framework相关的依赖,排除自带的commons-logging,再手动引入兼容的版本:

<!-- 排除Endpoints框架自带的冲突commons-logging依赖 -->
<dependency>
    <groupId>com.google.endpoints</groupId>
    <artifactId>endpoints-framework</artifactId>
    <version>2.2.2</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 引入兼容的commons-logging版本 -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

Gradle用户可以在build.gradle里做类似的排除:

implementation('com.google.endpoints:endpoints-framework:2.2.2') {
    exclude group: 'commons-logging', module: 'commons-logging'
}
implementation 'commons-logging:commons-logging:1.2'

方法2:用SLF4J桥接统一日志实现

如果项目不需要同时维护多种日志框架,可以用SLF4J的桥接依赖替代原生的commons-logging,彻底避免冲突:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.36</version>
    <scope>runtime</scope>
</dependency>

这个依赖会把commons-logging的调用转发到SLF4J框架,和Log4J的实现类不再产生版本矛盾。

方法3:清理本地仓库缓存

有时候本地Maven/Gradle仓库里的依赖包损坏也会触发这种奇怪的错误。可以删除本地仓库中commons-logging和log4j相关的文件夹,然后重新执行构建命令:

  • Maven用户:
mvn clean install -U
  • Gradle用户:
./gradlew clean build --refresh-dependencies

如果还是不行,可以用mvn dependency:tree(Maven)或者./gradlew dependencies(Gradle)查看依赖树,找出所有和commons-logging、log4j相关的依赖,逐一排查冲突来源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:36:36