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

运行FTP下载JAR包时出现java.lang.NoClassDefFoundError报错求助

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

这个问题我之前也碰到过,本质就是你的运行环境里缺了Apache Commons Logging这个依赖库——ftpcourier.jar在执行时需要调用这个库的日志相关类,但JVM找不到对应的class文件,所以抛出了这个异常。下面是具体的解决步骤:

1. 下载Apache Commons Logging的jar包

你需要下载对应版本的commons-logging-x.x.jar(推荐用1.2版本,和你用的JDK1.7兼容性很好)。直接去Apache Commons Logging的官方项目仓库下载就行,找适合JDK1.7的版本。

2. 修改运行命令,把依赖加入类路径

因为你用了-jar参数启动,JVM只会把ftpcourier.jar作为类路径,所以得显式把commons-logging.jar加进去。这里分两种操作方式:

方式一:找到主类后直接指定启动

打开ftpcourier.jar(用普通压缩工具就能打开),查看里面META-INF/MANIFEST.MF文件,找到Main-Class这一行的属性值,比如可能是com.ftpcourier.FtpCourierMain。然后修改命令如下:

java -cp "ftpcourier.jar;commons-logging-1.2.jar" -Demail-conf-path=d:\config com.ftpcourier.FtpCourierMain -d RCVE -h test.hostname.com -u smandal -w Password# -f /TIFR/report.xls -t d:\Local -s true -p 22 -x true

注意:如果commons-logging.jar不在当前命令执行的目录,要写上完整路径,比如d:\libs\commons-logging-1.2.jar。

方式二:把依赖放到JRE扩展目录(不推荐,但快速)

如果不想改命令,可以把commons-logging.jar复制到你的JRE的lib/ext目录下(也就是C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext),JVM会自动加载这个目录下的jar包。不过这种方式不够灵活,后续换环境还要重复操作,更推荐第一种方式。

3. 验证是否生效

运行修改后的命令,如果不再弹出NoClassDefFoundError,说明依赖已经正确加载,FTP下载任务应该就能正常执行了。要是还有类似的错误,那大概率是ftpcourier.jar还缺其他依赖,得继续排查补充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:13:17