2009-10-08 71 views
1

我试图在我的Windows机器上使用JRuby 1.4.0RC1安装hpricot gem。我试图按照相关问题的建议(请参阅 - >Installing hpricot for JRuby)。org.jruby.Main上的NoClassDefFoundError

每答案的意见,我拉着角度来说,Hpricot的git的头部,并从它的目录RAN:

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工作正常,所以我很困惑我的班级路径在哪里搞砸了。

回答

1

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

+0

如何将JRUBY_HOME添加到jgem配置文件? $ JRUBY_HOME在我的bash和Windows cmd会话中被回显。 – 2009-10-08 07:08:31

+0

做'sudo jgem set'并检查它是否有变量。如果没有,转到〜jgem(即它是jgem home),找到.profile文件,并在那里添加变量。 – 2009-10-08 13:32:20

+0

非常感谢您的建议。不知道我是否能够做你的建议。 JRuby即将进入宝石领域(见下文)。当我检查安装目录时,我没有看到任何代表配置文件的文件。请参阅下面的'答案'以获取更多的上下文。 – 2009-10-08 16:59:55

1

我在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/ 
2

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

+0

我认为你在正确的轨道上!我使用'JRuby 1.4.0RC1 Windows可执行文件'来安装JRuby。当我尝试java -jar lib/jruby.jar -e“puts'hello'”时,我收到消息:“无法访问jarfile lib/jruby.jar”。我是否必须在每个java执行的CP中指定JRUBY_HOME,或者是否有一种方法(或者安装程序是否应该完成这项工作)可以使JRUBY_HOME成为默认值?谢谢你的帮助! – 2009-10-14 17:05:14

+0

您可能想尝试RC2安装程序;我认为RC1安装程序或最初运行JRuby的bat文件存在一些问题。现在它附带了一个jruby.exe,它可能适合你。如果没有,请在http://jira.codehaus.org/browse/JRUBY提交错误 – 2009-10-25 19:07:27