從hadoop 1.2.1升級到 Hadoop2.6.0,調試寫代碼,仍是遇到一些問題的。這裏記錄一下,後續若是本身再遇到相似問題,那也好找緣由了。java
在eclipse裏編譯運行 WordCount,出現如下錯誤。apache
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Appseclipse
at java.lang.ClassLoader.defineClass1(Native Method)oop
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)spa
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142).net
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)調試
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)orm
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)blog
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)ip
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:93)
at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:163)
at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:731)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:536)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1296)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1293)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1293)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1314)
at WordCount.main(WordCount.java:70)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.util.Apps
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 24 more
通過查找相似的錯誤,終於找到了解決方法。
添加Yarn目錄下的Jar包便可。我是把全部包都添加上了。
總結:一、凡是出現 classNotFound、NoClassDefFoundError之類的錯誤異常,可能是jar包未導入引發的。根據相應提示找相應目錄下的jar包便可。
二、出現異常,直接粘貼到網上找異常解決,有時候不如本身思考着去解決好使。網上相相似的太多,不必定能準肯定位找到解決方法。仔細看下異常描述,稍加分析,嘗試本身去思考解決方法,也許會更有效。固然,前提是已經有必定的異常處理解決的經驗基礎。