org.jruby.Main上的NoClassDefFoundError

我试图使用JRuby 1.4.0RC1在Windows机器上安装hpricot gem。 我试图按照相关问题的build议(请参阅 – > 安装JRuby的hpricot )。

根据答案的build议,我把hpricot的git头从它的dir中跑了出来:

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

但是,当我运行这个我得到以下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. 

显然我的JRUBY_HOME \ lib \ jruby.jar正在迷路。

运行jruby -v工作正常,所以我很困惑,我的课程path越来越乱了。

Solutions Collecting From Web of "org.jruby.Main上的NoClassDefFoundError"

它看起来像你的jruby安装不完整。 你抓住bin还是src dist? 检查lib/jruby.jar存在,确保bin/jrubylib/jruby.jar位于同一个jruby位置,然后测试java -jar lib/jruby.jar -e "puts 'hello'"以查看它是否有效。

我怀疑sudo不会继承你的环境变量。 所以JRUBY_HOME不见了 尝试将其添加到jgem配置文件。

我在Windows上。 我不确定JRuby 1.4是否会删除“j”前缀。 jgem不被认可,但宝石是。 无论如何,当我创业的环境中,我得到:

 C:\tmp\hpricot>gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2009-09-30 patchlevel 174) [java] - INSTALLATION DIRECTORY: C:/jruby-1.4.0RC1/lib/ruby/gems/1.8 - RUBY EXECUTABLE: C:/jruby-1.4.0RC1/bin/../bin/jruby.bat - EXECUTABLE DIRECTORY: C:/jruby-1.4.0RC1/bin/../bin - RUBYGEMS PLATFORMS: - ruby - universal-java-1.6 - GEM PATHS: - C:/jruby-1.4.0RC1/lib/ruby/gems/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - "install" => "--env-shebang" - "update" => "--env-shebang" - REMOTE SOURCES: - http://gems.rubyforge.org/