【问题标题】:Installing hpricot for JRuby为 JRuby 安装 hpricot
【发布时间】:2009-04-07 15:46:17
【问题描述】:

我正在尝试为 Jruby on Rails 研究黄瓜。其中一个先决条件是 webrat,它具有先决条件 hpricot。

我已经使用 hpricot 安装了 gem:

gem install hpricot --source http://code.whytheluckystiff.net --version 0.6.1 --platform java

这将安装 java 版本的 hpricot。我将 hpricot_scan.jar 添加到 CLASSPATH 但是当我运行时:

cucumber features -n

我得到以下输出:

HpricotScanService.java:931:in `hpricot_scan': java.lang.NoSuchMethodError:
org.jruby.runtime.builtin.IRubyObject.getInstanceVariable(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
from HpricotScanService.java:1324:in `__hpricot_scan'
from null:-1:in `call'
from InvocationCallback.java:67:in `execute'
from FullFunctionCallbackMethod.java:69:in `call'
from DynamicMethod.java:243:in `call'
from CachingCallSite.java:283:in `cacheAndCall'
from CachingCallSite.java:121:in `callBlock'

等等

如果我编译 HpricotScanService.java 文件并将生成的 .class 文件添加到类路径中,我会得到:

Then I should see "Run"
private method `scan' called for Hpricot:Module (NoMethodError)
features/step_definitions/webrat_steps.rb:94:in `/^I should see "([^\"]*)"$/'
features/manage_activity.feature:9:in `Then I should see "Run"'

如果我尝试安装更高版本的 hpricot,我会得到:

ERROR: Failed to build gem native extension.
C:/Program Files/Ruby/jruby-1.2.0/bin/../bin/jruby.bat extconf.rb install hpricot --platform java
C:/Program Files/Ruby/jruby-1.2.0/bin/../lib/ruby/1.8/mkmf.rb:7: JRuby does not support native extensions. Check wiki.jruby.org for alternatives. (Not
ImplementedError)
from C:/Program Files/Ruby/jruby-1.2.0/bin/../lib/ruby/1.8/mkmf.rb:1:in `require'
from extconf.rb:1

有没有人知道我做错了什么/没有做什么/我在哪里愚蠢?

使用 Windows XP、JRuby 1.2.0

【问题讨论】:

    标签: ruby-on-rails jruby cucumber webrat hpricot


    【解决方案1】:

    我不知道 cucumber,但 Hpricot 绝对可以从 JRuby 1.2.0 开始使用(虽然不是最新版本的 Hpricot)。您安装了哪个版本的 Hpricot?也许它与其他库不兼容?

    以下命令对我有用:

    jruby -S gem install hpricot --version '~>0.6.1'  
    

    【讨论】:

      【解决方案2】:

      自从上个月 Ola Bini 重写了 hpricot jruby 支持后,hpricot 的git head 就可以用 jruby 安装了。只需下载头部,然后使用

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

      你应该是金色的。

      【讨论】:

      • 值得注意的是 hpricot 需要 Ragel 来构建。如果您运行 JRuby 是因为您不够酷,无法在目标环境中安装 C 编译器,那么您将不得不在另一个系统上组装 gem。显然,cmets 中不允许使用 HTML 链接:complang.org/ragel
      【解决方案3】:

      仅供参考,JRuby 1.4 版现在支持 HPricot 0.7 版。

      http://jruby.org/2009/11/02/jruby-1-4-0.html

      【讨论】:

        【解决方案4】:

        HPricot 使用原生 C 扩展,它不符合 FFI。所以不能在JRuby下使用。

        【讨论】:

        • 但是有一个java版本可用,你是说它也使用本机代码吗?
        • 抱歉,MatthieuF,我不知道您使用的是旧版本。应该没问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多