如何在Windows上使用Jruby的nokogiri?

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

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 

似乎是原生扩展(libxml2)与Jruby不兼容的问题,但是我find了一个解决方法在这里 ,但找不到libexslt.so,我不知道该把它放在哪里。 有没有人有使用jruby + windows + nokogiri + libexslt的成功经验? TIA

Solutions Collecting From Web of "如何在Windows上使用Jruby的nokogiri?"

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

尽管如此,你也有同样的问题,nokogiri无法找到你的libxml2,libxslt,&libexslt库 。 由于我不使用JRuby或nokogiri,我真的不知道它是如何工作的,但我最好的猜测是这样的:

最有可能的是,您至少需要libxml2和libxslt的 Windows二进制文件(DLL); 其他相关的Windows二进制文件可能是需要的并且在相同的地方可用。 您需要将DLL安装在路径中的某处,或者更好地与JRuby可执行文件相同的目录(看起来像“D:/jruby-1.3.1/bin”)。 (如果这样做不行的话,像libxmlj这样的类库可能会工作,但是我怀疑它 – 你可能需要一些原生的Windows。)

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

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

 gem install nokogiri --pre 

在这里找到

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

确实,您需要在路径中使用xml2 / libxslt dll。

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

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

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

或者从github主干安装nokogiri。

我希望这是有帮助的。

有用的背景链接: