【问题标题】:How to use nokogiri from Jruby on Windows?如何在 Windows 上使用来自 Jruby 的 nokogiri?
【发布时间】:2011-06-29 21:39:20
【问题描述】:

在 Windows 7 上尝试将 Nokogiri 与 Jruby 一起使用时出现以下错误

D:\code\h4>jruby -e "require 'rubygems'; require 'nokogiri'"
D:/jruby-1.3.1/bin/../lib/ruby/1.8/ffi/library.rb:18:in `ffi_lib': Could not ope
n any of [xml2, xslt, exslt] (LoadError)
        from D:/jruby-1.3.1/lib/ruby/gems/1.8/gems/nokogiri-1.3.3-java/lib/nokog
iri/ffi/libxml.rb:5
        from D:/jruby-1.3.1/lib/ruby/gems/1.8/gems/nokogiri-1.3.3-java/lib/nokog
iri/ffi/libxml.rb:31:in `require'
        from D:/jruby-1.3.1/bin/../lib/ruby/site_ruby/1.8/rubygems/custom_requir
e.rb:31:in `require'
        from D:/jruby-1.3.1/lib/ruby/gems/1.8/gems/nokogiri-1.3.3-java/lib/nokog
iri.rb:10
        from D:/jruby-1.3.1/lib/ruby/gems/1.8/gems/nokogiri-1.3.3-java/lib/nokog
iri.rb:36:in `require'
        from D:/jruby-1.3.1/bin/../lib/ruby/site_ruby/1.8/rubygems/custom_requir
e.rb:36:in `require'
        from -e:1

似乎是 Jruby 的本机扩展 (libxml2) 不兼容的问题,但是我找到了 workaround here,但找不到 libexslt.so 并且不确定将其放在哪里。谁有使用jruby+windows+nokogiri+libexslt的成功经验? TIA

【问题讨论】:

    标签: windows jruby nokogiri libxml2


    【解决方案1】:

    您找到的解决方法适用于 UNIX 系统; .so 文件是一个可加载的模块,类似于 Windows 中的 DLL。而且您不能在 Windows 中进行软链接(ln -s 命令),因此这不适用于您的情况。

    不过,您确实遇到了同样的问题,即 nokogiri 找不到您的 libxml2、libxslt 和 libexslt 库。由于我不使用 JRuby 或 nokogiri,我真的不确定它会如何工作,但我最好的猜测是:

    您很可能至少需要libxml2libxslt 的Windows 二进制文件(DLL);可能需要其他相关的 Windows 二进制文件,可在 same place 获得。您会希望将 DLL 安装在路径中的某个位置,或者最好安装在与 JRuby 可执行文件相同的目录中(看起来像“D:/jruby-1.3.1/bin”)。 (如果这不起作用,也许像 libxmlj 这样的 Java 原生形式的库可能会起作用,但我对此表示怀疑——您可能需要 Windows 原生形式的库。)

    我希望这会让你开始工作。

    【讨论】:

      【解决方案2】:

      现在有一个纯 Java 版本也可以在 Windows 上运行。

      gem install nokogiri --pre
      

      在这里找到

      https://github.com/tenderlove/nokogiri/wiki/pure-java-nokogiri-for-jruby
      

      【讨论】:

        【解决方案3】:

        您的路径中确实需要 xml2 / libxslt dll。

        但是,我发现有必要更新到 jruby-1.4.0RC2(我相信对于 FFI 的一些改进)。

        另外,需要更新到最新的 nokogiri 1.3.3 并手动应用以下提交:

        http://github.com/tenderlove/nokogiri/commit/0555c69e70083a6368b563f18da2c8d5416515cc

        或从 github 主干安装 nokogiri。

        我希望这会有所帮助。

        有用的背景链接:

        【讨论】:

          猜你喜欢
          • 2014-11-01
          • 2011-05-08
          • 1970-01-01
          • 2016-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-20
          • 1970-01-01
          相关资源
          最近更新 更多