我跟随这个教程,这是非常简单的(http://www.tutorialspoint.com/hadoop/hadoop_mapreduce.htm)在我尝试运行java文件之前,一切都正常。
我得到了以下线索。
Exception in thread "main" java.lang.ClassNotFoundException: ProcessUnits
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
我尝试过很多不同的方法,我总是得到classnotfoundexception。我觉得这和hadoop类路径或者其他什么东西有关。请帮忙。
4条答案
按热度按时间ykejflvf1#
这个代码运行良好。
ProcessUnits
是主班,我想,你改了主班的名字。JobConf conf = new JobConf(ProcessUnits.class);
在那里你没有改变根据你的主要类。根据你的课程安排给班级主课。c3frrgcw2#
是否可以检查是否正确运行该命令(检查当前目录和类名,应该有hadoop.processunits,而不仅仅是processunits,请参见下面的内容)。
$hadoop\u home/bin/hadoop jar units.jar hadoop.processunits input\u dir output\u dir
如果仍然不起作用,请尝试下面的命令
$hadoop\u home/bin/hadoop jar units.jar-cp./*hadoop.processunits input\u dir output\u dir
wsewodh23#
尝试将jar文件添加到
HADOOP_CLASSPATH
并验证您是否编写了类的完整规范名称mypackage.MyClass
.zlhcx6iw4#
如果在构建将用作“hadoopjar”参数的jar文件的过程中出现错误,也会发生这种情况。这会导致jar文件清单中的主类为“null”而不是null。这将阻止hadoopjar命令从命令行参数获取主类。