2009-09-19 48 views
1

我越来越想在Windows 7如何在Windows上使用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 

使用引入nokogiri使用JRuby如果出现以下错误似乎是使用JRuby的原生扩展(libxml2的)不兼容的问题,但是我发现一个workaround here,但找不到libexslt.so,我不知道该把它放在哪里。有没有人有使用jruby + windows + nokogiri + libexslt的成功经验? TIA

回答

1

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

尽管如此,你有在引入nokogiri同样的问题,找不到你libxml2的,的libxslt,& libexslt库。由于我没有使用JRuby或nokogiri,所以我不确定它是如何工作的,但我的最佳猜测是这样的:

最有可能的是,您需要Windows二进制文件(DLL)libxml2libxslt ;其他相关的Windows二进制文件可能需要,可在same place。您需要将DLL安装在您的路径中的某个位置,或者更好地与JRuby可执行文件位于相同的目录中(看起来像“D:/jruby-1.3.1/bin”)。 (如果这不起作用,可能像libxmlj这样的库的Java本机形式可能会起作用,但我怀疑它 - 您可能需要Windows上的本机。)

我希望这会让你在路上去工作。

1

的确,您需要在路径中使用xml2/libxslt dll。然而,我发现有必要更新到jruby-1.4.0RC2(我相信一些FFI的改进)。

此外,需要更新到最新的1.3.3引入nokogiri手动&应用以下承诺:从GitHub树干

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

或安装引入nokogiri。

我希望这是有帮助的。

有用的背景链接:

1

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

gem install nokogiri --pre 

发现这里

https://github.com/tenderlove/nokogiri/wiki/pure-java-nokogiri-for-jruby 
相关问题