NoClassDefFoundError on org.jruby.Main

dr. picture dr. · Oct 8, 2009 · Viewed 8.3k times · Source

I'm trying to install the hpricot gem on my Windows machine using JRuby 1.4.0RC1. I'm trying to follow the advice to the related question (see -> Installing hpricot for JRuby).

Per the answer's advice I pulled the git head of hpricot and from it's dir ran:

jruby -S rake package_jruby
cd pkg
sudo jgem install ./hpricot-0.8.1-jruby.gem

But when I run this I get the following NoClassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main
Caused by: java.lang.ClassNotFoundException: org.jruby.Main
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: org.jruby.Main.  Program will exit.

Apparently my JRUBY_HOME\lib\jruby.jar is getting lost.

running jruby -v works fine, so I'm confused where my class path is getting messed up.

Answer

Charles Oliver Nutter picture Charles Oliver Nutter · Oct 13, 2009

It looks like your jruby install isn't complete. Did you grab the bin or src dist? Check if lib/jruby.jar exists, make sure bin/jruby is in the same jruby location as lib/jruby.jar, and test java -jar lib/jruby.jar -e "puts 'hello'" to see if it's functional.