2009-09-19 43 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 
相關問題