2009-09-19 12 views
1

Je reçois l'erreur suivante lorsque vous essayez d'utiliser Nokogiri avec JRuby sur Windows 7Comment utiliser nokogiri à partir de Jruby sur Windows?

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 

semble être un problème avec l'incompatibilité des extensions natives (libxml2) de JRuby, mais je l'ai trouvé un workaround here, mais n'a pas pu trouver libexslt.so et je ne sais pas où le mettre. Quelqu'un at-il une expérience réussie de l'utilisation de jruby + windows + nokogiri + libexslt? TIA

Répondre

1

La solution de contournement que vous avez trouvée concerne un système UNIX; le fichier .so est un module chargeable, similaire à une DLL dans Windows. Et vous ne pouvez pas créer de lien logiciel sous Windows (la commande ln -s), cela ne s'applique donc pas à votre situation.

Néanmoins, vous avez le même problème dans cette nokogiri ne trouvez pas votre libxml2, libxslt, & bibliothèques libexslt. Puisque je n'utilise pas JRuby ou nokogiri, je ne sais pas vraiment comment ça va fonctionner, mais ma meilleure estimation est la suivante:

Vous avez probablement besoin des binaires Windows (DLL) de libxml2 et libxslt au minimum ; d'autres binaires Windows connexes peuvent être nécessaires et sont disponibles au same place. Vous voudrez que les DLL soient installées quelque part dans votre chemin, ou mieux encore dans le même répertoire que votre exécutable JRuby (ressemble à "D: /jruby-1.3.1/bin"). (Si cela ne fonctionne pas, peut-être qu'une forme natif Java des bibliothèques comme libxmlj pourrait fonctionner, mais j'en doute - vous avez probablement besoin de celles natives de Windows.)

Je m'attends à ce que vous soyez sur la bonne voie travailler.

1

Il est vrai que vous avez besoin des dlls xml2/libxslt dans votre chemin.

Cependant, j'ai trouvé nécessaire de mettre à jour à jruby-1.4.0RC2 (pour certaines améliorations FFI je crois).

En outre, besoin de mettre à jour la dernière nokogiri & appliquer manuellement 1.3.3 commit suivante:

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

OU installer nokogiri à partir du tronc GitHub.

J'espère que c'est utile.

liens de fond utiles:

1

Il y a maintenant une version pure Java qui peut fonctionner sous Windows aussi bien.

gem install nokogiri --pre 

Trouvé ici

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