1

在 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)不兼容的问题,但是我在这里找到了解决方法,但找不到 libexslt.so 并且不确定将其放在哪里。有没有人有使用jruby+windows+nokogiri+libexslt的成功经验?TIA

4

3 回答 3

1

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

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

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

我希望这会让你走上工作之路。

于 2009-10-02T13:17:19.127 回答
1

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

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

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

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

或者从 github 主干安装 nokogiri。

我希望这是有帮助的。

有用的背景链接:

于 2009-10-29T20:21:28.543 回答
1

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

gem install nokogiri --pre

在这里找到

https://github.com/tenderlove/nokogiri/wiki/pure-java-nokogiri-for-jruby
于 2011-02-24T23:57:54.377 回答