1.首先说一下前提
hadoop 已经正常启动,并且mysql驱动包已经导入好:(Hadoop 3.2.0 ,mysql 8.0, mysql 驱动8.0,Sqoop 1.4.7)
2.错误信息
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
如图所示:
具体信息:
1 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 2 at org.apache.sqoop.manager.MySQLManager.initOptionDefaults(MySQLManager.java:73) 3 at org.apache.sqoop.manager.SqlManager.<init>(SqlManager.java:89) 4 at com.cloudera.sqoop.manager.SqlManager.<init>(SqlManager.java:33) 5 at org.apache.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:51) 6 at com.cloudera.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:30) 7 at org.apache.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:46) 8 at com.cloudera.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:31) 9 at org.apache.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:38) 10 at com.cloudera.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:31) 11 at org.apache.sqoop.manager.MySQLManager.<init>(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.StringUtils 23 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 如下图:
第三步 把该jar包放到Sqoop 下的lib文件夹下面即可 如图:(我是先试的3版本 发现不行 才试的2 ,但是我没有删除3的jar包)
第四步 启动:结果
大功告成!