线程"main"中的异常java.lang.NoClassDefFoundError:org/apache/hadoop/util/Tool

Pra*_*ant 3 hadoop mapreduce

I get below error when i package (jar) and run my defaulthadoopjob. 

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/Tool
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.Tool
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 12 more
Could not find the main class: DefaultHadoopJobDriver. Program will exit.


Commands used to build Jar. 

# jar -cvf dhj.jar 
# hadoop -jar dhj.jar DefaultHadoopJobDriver

The above command gave me error "Failed to load Main-Class manifest attribute from dhj.jar"

rebuilt jar with manifest using below command
Run Code Online (Sandbox Code Playgroud)

jar -cvfe dhj.jar DefaultHadoopJobDriver.
hadoop -jar dhj.jar DefaultHadoopJobDriver - 这返回了我上面报告的原始错误消息.

我的Hadoop作业有单个类"DefaultHoopJobDrive",它扩展了Configures并实现了Tool,并且运行方法只作为Job创建和输入路径,outpurpath集的代码.Aslo Im使用新的API.

I'm running hadoop 1.2.1 and the Job works fine from eclipse.

This might be something to do with the classpath. Please help.
Run Code Online (Sandbox Code Playgroud)

小智 5

为了执行那个罐子,你不必给予hadoop -jar.命令是这样的:

 hadoop jar <jar> [mainClass] args...
Run Code Online (Sandbox Code Playgroud)

如果这个jar再次获得java.lang.ClassNotFoundException异常,那么你可以使用:

hadoop classpath

命令查看hadoop-core-1.2.1.jarhadoop安装类路径中是否存在?

仅供参考,如果此列表中没有,您必须将此jar添加到hadoop lib目录中.