“线程”;“主要”;java.lang.ClassNotFoundException

“线程”;“主要”;java.lang.ClassNotFoundException,exception,hadoop,mapreduce,Exception,Hadoop,Mapreduce,正在尝试运行作业,但我不断遇到此错误。我不知道如何解决它。我有什么遗漏吗?这里怎么了 这在我的壳里 [cloudera@localhost home]$ hadoop jar cloudera/MinMaxCountDriver.jar MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/ 这就是我得到的错误 线程“main”java.lang.ClassNotFoundException中的异常:MinMax

正在尝试运行作业,但我不断遇到此错误。我不知道如何解决它。我有什么遗漏吗?这里怎么了

这在我的壳里

[cloudera@localhost home]$ hadoop jar cloudera/MinMaxCountDriver.jar MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/
这就是我得到的错误 线程“main”java.lang.ClassNotFoundException中的异常:MinMaxCount .... 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:247) 位于org.apache.hadoop.util.RunJar.main(RunJar.java:201)

这是我的司机

public class MinMaxCountDriver {
public static void main(String []args) throws Exception
{
    Configuration conf = new Configuration();
    String [] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();

    if(otherArgs.length !=2 )
    {
        System.err.println("You need 2 Arguement");
        System.exit(2);
    }

    ...

    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

    System.exit(job.waitForCompletion(true)? 0: 1);

}

}
.jar中的每个类的顶部都有[package MapRedDesign;]

根据您的评论,确保使用包完全限定类名,否则Java将不知道在哪里可以找到它

hadoop jar cloudera/MinMaxCountDriver.jar MapRedDesign.MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/

运行MR jobs的基本命令是

hadoop jar myjar.jar classname inputfolder outputfolder
对我来说,它也可以在没有类名的情况下工作

myproject
  |
  |
   -----> mypackage
           |
           |
           ---->Driver.java
           |
           |
           ---->Mapper.java
           |
           |
           ---->Reducer.java
如果这是树,我不需要指定类名

hadoop jar driver.jar in out
但是

为此,我需要指定我试图执行的驱动程序类的类名

hadoop jar driver2.jar mypackage2.Driver2 in out

你的类在一个包中吗?我有一个驱动程序类,一个映射器和一个减缩器都打包在MinMaxCountDriver.jarYes中,但是你的类在一个包中吗?比如com.example.plugin…是的。驱动程序、映射程序和Reducer都在同一个包中,还有一个可写类。所有4个都打包到.jar文件中。。。不是我要的。
.java
的开头应该有一个包说明符,如
package com.example….
,您需要用该包限定类名。。比如
com.whatever.MinMaxClass
hadoop jar driver2.jar mypackage2.Driver2 in out