Have you used the Api setJarByClass in your main program? http://hadoop.apache.org/docs/r1.0.4/api/org/apache/hadoop/mapreduce/Job.html#setJarByClass(java.lang.Class)
On Tuesday, February 19, 2013, Fatih Haltas wrote: > Hi everyone, > > I know this is the common mistake to not specify the class adress while > trying to run a jar, however, > although I specified, I am still getting the ClassNotFound exception. > > What may be the reason for it? I have been struggling for this problem > more than a 2 days. > I just wrote different MapReduce application for some anlaysis. I got this > problem. > > To check, is there something wrong with my system, i tried to run > WordCount example. > When I just run hadoop-examples wordcount, it is working fine. > > But when I add just "package org.myorg;" command at the beginning, it > doesnot work. > > Here is what I have done so far > ************************************************************************* > 1. I just copied wordcount code from the apaches own examples source code > and I just changed package decleration as "package org.myorg;" > ************************************************************************** > 2. Then I tried to run that command: > ************************************************************************* > "hadoop jar wordcount_19_02.jar org.myorg.WordCount > /home/hadoop/project/hadoop-data/NetFlow 19_02_wordcount.output" > ************************************************************************* > 3. I got following error: > ************************************************************************** > [hadoop@ADUAE042-LAP-V project]$ hadoop jar wordcount_19_02.jar > org.myorg.WordCount /home/hadoop/project/hadoop-data/NetFlow > 19_02_wordcount.output > Warning: $HADOOP_HOME is deprecated. > > Exception in thread "main" java.lang.ClassNotFoundException: > org.myorg.WordCount > at java.net.URLClassLoader$1.run(URLClassLoader.java:217) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:205) > at java.lang.ClassLoader.loadClass(ClassLoader.java:321) > at java.lang.ClassLoader.loadClass(ClassLoader.java:266) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:266) > at org.apache.hadoop.util.RunJar.main(RunJar.java:149) > > ************************************************************************** > 4. This is the content of my .jar file: > **************************************************** > [hadoop@ADUAE042-LAP-V project]$ jar tf wordcount_19_02.jar > META-INF/ > META-INF/MANIFEST.MF > wordcount_classes/ > wordcount_classes/org/ > wordcount_classes/org/myorg/ > wordcount_classes/org/myorg/WordCount.class > wordcount_classes/org/myorg/WordCount$TokenizerMapper.class > wordcount_classes/org/myorg/WordCount$IntSumReducer.class > ********************************************************** > 5. This is the 'ls' output of my working directory: > ********************************************************** > [hadoop@ADUAE042-LAP-V project]$ ls > flowclasses_18_02 flowclasses_18_02.jar hadoop-1.0.4 > hadoop-1.0.4.tar.gz hadoop-data MapReduce.java sample > wordcount_19_02.jar wordcount_classes WordCountClasses WordCount.java > ************************************************************* > So as you see, package decleration is fine but I am really helpless, I > googled but they are all saying samething you should specify the package > hierarchy of your main class. I did know it already I am specifying but > doesn't work. > > I would be much obliged to anyone helped me > > Regards, > > >