You need to put the library jar on your classpath (eg using
HADOOP_CLASSPATH) as well. The -libjars will ship it to the cluster
and put it on the classpath of your task, but not the classpath of
your "driver" code.

-Todd

On Thu, Dec 9, 2010 at 10:29 PM, Vipul Pandey <vipan...@gmail.com> wrote:
> disclaimer : a newbie!!!
> Howdy?
> Got a quick question. -libjars option doesn't seem to work for me in -
> prettymuch - my first (or mayby second) mapreduce job.
> Here's what i'm doing :
> $bin/hadoop jar  sherlock.jar somepkg.FindSchoolsJob -libjars
>  HStats-1A18.jar input output
>
> sherlock.jar has my main class (ofcourse)  FindSchoolsJob, which runs just
> fine by itself till I add a dependency on a class in HStats-1A18.jar.
> When I run the above command with -libjars specified - it fails to find my
> classes that 'are' inside HStats jar file.
> Exception in thread "main" java.lang.NoClassDefFoundError: com/*****/HAgent
> at com.*****.FindSchoolsJob.run(FindSchoolsJob.java:46)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
> at com.******.FindSchoolsJob.main(FindSchoolsJob.java:101)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
> Caused by: java.lang.ClassNotFoundException:com/*****/HAgent
> 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:307)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> ... 8 more
>
> My main class is defined as below :
> public class FindSchoolsJob extends Configured implements Tool {
> :
> public int run(String[] args) throws Exception {
> :
> :
>               }
> :
> public static void main(String[] args) throws Exception {
> int res = ToolRunner.run(new Configuration(), new FindSchoolsJob(),
> args);
> System.exit(res);
> }
> }
> Any hint would be highly appreciated.
> Thank You!
> ~V



-- 
Todd Lipcon
Software Engineer, Cloudera

Reply via email to