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包)
第四步 啟動:結果
大功告成!