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

运行Mongo-Hadoop Connector的WordCount jar包出现NoClassDefFoundError错误

问题原因

出现NoClassDefFoundError: org/apache/commons/lang/StringUtils报错的核心原因是运行环境缺失Apache Commons Lang 2.x依赖:Mongo-Hadoop Connector的核心工具类依赖该包下的StringUtils工具,且注意不能用3.x版本的Commons Lang,3.x版本的包路径为org/apache/commons/lang3/StringUtils,和报错路径不匹配,无法兼容。

解决方案
  • 方案1:打包全依赖fat jar(最稳定,推荐)
    如果你使用Maven管理项目,首先在pom.xml中添加2.6版本的commons-lang依赖:
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    
    再配置maven-shade-plugin或者maven-assembly-plugin插件,打包时把所有依赖打进jar包,后续直接运行该带依赖的jar包即可。
  • 方案2:提交任务时动态加载依赖
    不需要修改打包逻辑,提交Hadoop任务时通过-libjars参数指定commons-lang2的jar包路径:
    hadoop jar 你的WordCount.jar 主类全限定名 -libjars /本地路径/commons-lang-2.6.jar
    
  • 方案3:集群全局添加依赖
    将commons-lang-2.6.jar上传到Hadoop集群所有节点的$HADOOP_HOME/share/hadoop/common/lib/目录,重启Hadoop服务后再运行任务,适合集群固定要跑Mongo-Hadoop相关任务的场景。
验证方式

可以执行jar tf 你的jar包.jar | grep "org/apache/commons/lang/StringUtils"检查jar包是否已经包含对应的类,确认依赖打包成功。

内容的提问来源于stack exchange,提问作者Long Cảnh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:06:03