NoClassDefFoundError on org.jruby.Main

左心房为你撑大大i 提交于 2020-01-06 03:01:06

问题


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.


回答1:


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.




回答2:


I suspect sudo does not inherit your environment variables. So JRUBY_HOME is gone. Try to add it to jgem profile.




回答3:


I'm on Windows. I'm not sure if JRuby 1.4 drops the 'j' prefix. jgem isn't recognized, but gem is. Regardless, when I gem environment I get:

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/


来源:https://stackoverflow.com/questions/1534977/noclassdeffounderror-on-org-jruby-main

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!