sqoop mysql jar包_Sqoop 连接mysql 错误 java.lang.NoClassDefFoundError

当使用 Sqoop (1.4.7) 连接 MySQL (8.0) 时,出现 `NoClassDefFoundError` 异常,指出未找到 `org/apache/commons/lang/StringUtils` 类。问题在于 Sqoop 中缺少对应的 jar 包。解决方案是下载 Apache Commons Lang (推荐版本 2,如果需要可尝试版本 3),将解压后的 `commons-lang.jar` 放入 Sqoop 的 lib 目录下,然后重新启动 Sqoop,问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先说一下前提

hadoop 已经正常启动,并且mysql驱动包已经导入好:(Hadoop 3.2.0 ,mysql 8.0, mysql 驱动8.0,Sqoop 1.4.7)

2b315f4b24a337bc7697a47e6098a746.png

b2d80f82bbb9934a4dbe344e1d961bf7.png

2.错误信息

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

如图所示:

b9b459e45bff9c1f3ccc1230f9909e90.png

具体信息:

1 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils2 at org.apache.sqoop.manager.MySQLManager.initOptionDefaults(MySQLManager.java:73)3 at org.apache.sqoop.manager.SqlManager.(SqlManager.java:89)4 at com.cloudera.sqoop.manager.SqlManager.(SqlManager.java:33)5 at org.apache.sqoop.manager.GenericJdbcManager.(GenericJdbcManager.java:51)6 at com.cloudera.sqoop.manager.GenericJdbcManager.(GenericJdbcManager.java:30)7 at org.apache.sqoop.manager.CatalogQueryManager.(CatalogQueryManager.java:46)8 at com.cloudera.sqoop.manager.CatalogQueryManager.(CatalogQueryManager.java:31)9 at org.apache.sqoop.manager.InformationSchemaManager.(InformationSchemaManager.java:38)10 at com.cloudera.sqoop.manager.InformationSchemaManager.(InformationSchemaManager.java:31)11 at org.apache.sqoop.manager.MySQLManager.(MySQLManager.java:65)12 at org.apache.sqoop.manager.DefaultManagerFactory.accept(DefaultManagerFactory.java:67)13 at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:184)14 at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:272)15 at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:44)16 at org.apache.sqoop.Sqoop.run(Sqoop.java:147)17 at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)18 at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)19 at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)20 at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)21 at org.apache.sqoop.Sqoop.main(Sqoop.java:252)22 Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils23 at java.net.URLClassLoader.findClass(URLClassLoader.java:382)24 at java.lang.ClassLoader.loadClass(ClassLoader.java:424)25 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)26 at java.lang.ClassLoader.loadClass(ClassLoader.java:357)27 ... 20 more

3.问题原因

原因在异常中已经很明显了:没有找到类 org.apache.commons.lang.StringUtils  也就是说Sqoop中没有这个类或者包含这个类的jar包。

4.解决办法

解决办法就是将这个类所在的jar包添加到Sqoop中,这个类所在的jar包是  commons-lang

第一步  下载commons-lang:  下载地址: 点击下载  注意:这里面有两个版本  2 和 3  请优先使用 2 因为Sqoop版本大部分是支持2 的  (如果不行 再尝试3)

第二步 把下载下来的文件解压 :里面会得到好几个jar文件 我们需要的是  commons-lang  如下图:

706591716786bbf56b0cc7586dd87874.png

第三步   把该jar包放到Sqoop 下的lib文件夹下面即可  如图:(我是先试的3版本 发现不行 才试的2 ,但是我没有删除3的jar包)

dc15e665ffe11e28b711bbdc9bac8a8a.png

第四步  启动:结果

e1143fcb813a18cac00f3ded6e767ae5.png

大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值