Alex, This looks like a path issue. Make sure your classpath includes pig.jar . Take a look inside bin/pig -- it's just a bash script, pretty easy to follow where it gets its stuff.
-D On Tue, Feb 9, 2010 at 1:54 AM, Alex Parvulescu <[email protected]> wrote: > Hello, > > I have a problem starting the grunt shell. I think this affects the 0.6 > branch and forward. > > This is the error I get when I try to start the shell or when I try to run > any script: > > a...@alex-desktop:~/hadoop/pig/bin$ pig > Exception in thread "main" java.lang.NoClassDefFoundError: > org/apache/pig/Main > Caused by: java.lang.ClassNotFoundException: org.apache.pig.Main > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > at java.lang.ClassLoader.loadClass(ClassLoader.java:252) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) > Could not find the main class: org.apache.pig.Main. Program will exit. > > A variation of this is also: > > a...@alex-desktop:~/hadoop/pig/bin$ pig > Exception in thread "main" java.lang.NoClassDefFoundError: > jline/ConsoleReaderInputStream > Caused by: java.lang.ClassNotFoundException: jline.ConsoleReaderInputStream > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > at java.lang.ClassLoader.loadClass(ClassLoader.java:252) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) > Could not find the main class: org.apache.pig.Main. Program will exit. > > I poked around a bit and I think the 'bin/pig' script does not build the > classpath correctly > > Option #1 > I you use only the pig.jar file that gets generated from the build > PIG_HOME/pig.jar you get java.lang.ClassNotFoundException the second error. > This is only if you don't have the 'build' directory in place. > This happened to me while I was trying to move the pig dir from local to a > test server. I was trying to cut down on the size. > > Case #2 > Let's say that you have the pig.jar and the build directory generated by the > build. Now you get java.lang.NoClassDefFoundError: > jline/ConsoleReaderInputStream > Now my pig install looks like this: > > pig/pig.jar > /pig/build/pig-0.6.0-dev.jar > pig/build/pig-0.6.0-dev-core.jar > ... > As far as I can see this happens also if you try to copy the dev jars into > the main directory( replacing the pig.jar): > > pig/pig-0.6.0-dev.jar > pig/pig-0.6.0-dev-core.jar > > > I think the problem comes from the pig script that builds the classpath: > pig/bin/pig : > ....... > # for releases, add core pig to CLASSPATH > for f in $PIG_HOME/pig-*-core.jar; do > CLASSPATH=${CLASSPATH}:$f; > done > > # during development pig jar might be in build > for f in $PIG_HOME/build/pig-*-core.jar; do > CLASSPATH=${CLASSPATH}:$f; > done > ...... > As you can see none of this matches the 'light' version > (pig-0.6.0-dev-core.jar) that does not include everything, instead this > should match (pig-0.6.0-dev.jar). > > This appears to be a change from the pig 0.5 release which works for me ok, > and is packing pig-0.5.0-core.jar as the full dependencies version, whereas > the pig-0.6.0-dev-core.jar is the light version. > > Also this problem goes away if you just rename pig-0.6.0-dev.jar to > pig-0.6.0-dev-core.jar, so you can have a fully functioning console. > > I hope this helps anybody > > alex >
