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

求助:Java程序运行报错NoClassDefFoundError: org/apache/commons/logging/LogFactory

解决java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory错误

嘿,这个问题我之前也碰到过!本质就是你的项目缺少了Apache Commons Logging这个依赖包——从你贴的错误栈能看出来,HttpClient在初始化过程中需要用到org.apache.commons.logging.LogFactory这个类,但JVM在运行时找不到它。下面给你几种不同场景的解决办法:

如果你用Maven管理项目

直接在项目的pom.xml中添加以下依赖:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version> <!-- 可以替换成最新的稳定版本 -->
</dependency>

添加后执行mvn clean install刷新依赖就行。

如果你用Gradle管理项目

在build.gradle(或build.gradle.kts)里加入依赖声明:

// Groovy语法
implementation 'commons-logging:commons-logging:1.2'
// Kotlin语法
implementation("commons-logging:commons-logging:1.2")

然后同步Gradle项目即可。

手动管理依赖(不用构建工具的情况)

如果是手动维护jar包的项目,去Apache Commons Logging的官方渠道下载对应版本的jar包,把下载好的commons-logging-x.x.jar放到项目的lib目录下,同时要确保你的IDE已经把这个jar包添加到项目的类路径中(比如IDEA里右键jar包选择"Add as Library")。

额外小提示:避免日志依赖冲突

如果你的项目已经引入了SLF4J这类日志框架,也可以用jcl-over-slf4j来替代原生的commons-logging,这样能避免日志依赖冲突。Maven依赖如下:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.36</version> <!-- 匹配你的SLF4J版本 -->
</dependency>

附你遇到的错误信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.http.conn.ssl.DefaultHostnameVerifier.(DefaultHostnameVerifier.java:82)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:955)
at Main.main(Main.java:87)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:38:32