classnotfoundexception在运行jar时,尽管它包含所有这些类

kxxlusnw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(416)

我创造了一个 jar 使用 eclipse 对于 mapreduce 工作。如果你提取 jar 你可以看到在场的所有同学。当你 run 这个 jarhadoop``using hadoop命令它显示如下所示的错误。 它不能只识别一个类,即Test_project$TwoDArrayWritables.Test_projectmain类和TwoDArrayWritables是一个classTest_project.TwoDArrayWritables继承TwoDArrayWritable内置类hadoop` .
jar提取图像:

错误:

  1. 16/04/05 15:48:28 INFO mapred.JobClient: Task Id : attempt_201604051120_0002_m_000000_1, Status : FAILED
  2. java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: mapreduce.Test_project$TwoDArrayWritables
  3. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:889)
  4. at org.apache.hadoop.mapred.JobConf.getMapOutputValueClass(JobConf.java:747)
  5. at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:966)
  6. at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:422)
  7. at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
  8. at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
  9. at java.security.AccessController.doPrivileged(Native Method)
  10. at javax.security.auth.Subject.doAs(Subject.java:422)
  11. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
  12. at org.apache.hadoop.mapred.Child.main(Child.java:249)
  13. Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: mapreduce.Test_project$TwoDArrayWritables
  14. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:857)
  15. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:881)
  16. ... 9 more
  17. Caused by: java.lang.ClassNotFoundException: mapreduce.Test_project$TwoDArrayWritables
  18. at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  19. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  20. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  21. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  22. at java.lang.Class.forName0(Native Method)
  23. at java.lang.Class.forName(Class.java:348)
  24. at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:810)
  25. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:855)
  26. ... 10 more
  27. 16/04/05 15:48:34 INFO mapred.JobClient: Task Id : attempt_201604051120_0002_m_000000_2, Status : FAILED
  28. java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: mapreduce.Test_project$TwoDArrayWritables
  29. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:889)
  30. at org.apache.hadoop.mapred.JobConf.getMapOutputValueClass(JobConf.java:747)
  31. at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:966)
  32. at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:422)
  33. at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
  34. at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
  35. at java.security.AccessController.doPrivileged(Native Method)
  36. at javax.security.auth.Subject.doAs(Subject.java:422)
  37. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
  38. at org.apache.hadoop.mapred.Child.main(Child.java:249)
  39. Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: mapreduce.Test_project$TwoDArrayWritables
  40. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:857)
  41. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:881)
  42. ... 9 more
  43. Caused by: java.lang.ClassNotFoundException: mapreduce.Test_project$TwoDArrayWritables
  44. at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  45. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  46. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  47. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  48. at java.lang.Class.forName0(Native Method)
  49. at java.lang.Class.forName(Class.java:348)
  50. at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:810)
  51. at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:855)
  52. ... 10 more

谷歌搜索了许多解决方案,但都没有奏效。请帮帮我!

w8rqjzmb

w8rqjzmb1#

试试这个: bin/hadoop jar /path/to/jarfile/newproj.jar Test_project.TwoDArrayWritables /user/hduser/input /user/hduser/output1

2sbarzqh

2sbarzqh2#

挣扎了大约几个星期后,我的脑海中突然出现了一些东西,即我在工作中使用了两个减速机,因此为每个减速机定义了两个jobconf:
我以前的(错误代码) JobConf conf = new JobConf(getConf(), Test_project.class); JobConf conf2 = new JobConf(getConf()); 因为我认为配置已经定义好了,所以在conf2中没有提到类test\u project.class****
我的礼物(正确代码) JobConf conf = new JobConf(getConf(), Test_project.class); JobConf conf2 = new JobConf(getConf(), Test_project.class); 引发错误的原因是,在执行时,它正在搜索test\u project$twodarraywritables,因为它没有test\u project.class类,所以找不到twodarraywritables
现在可以了。

相关问题