سؤال

أحصل على الخطأ التالي عند محاولة استخدام Nokogiri مع Jruby على Windows 7

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، ومع ذلك وجدت الحل البديل هنا, ، ولكن لا يمكن العثور على libexslt.so وأنا لست متأكدا من أين وضعه. هل لدى أي شخص تجربة ناجحة في استخدام Jruby + Windows + Nokogiri + Libexslt؟ تيا

هل كانت مفيدة؟

المحلول

الحل البديل الذي وجدته هو لنظام UNIX؛ ملف .SO هو وحدة نمطية يمكن تحميلها، مشابهة ل DLL في Windows. ولا يمكنك الترفيه في ويندوز ( ln -s الأمر)، لذلك لا ينطبق في وضعك.

ومع ذلك، لديك نفس المشكلة في هذا nokogiri لا يمكن العثور عليك libxml2، libxslt، & libexslt المكتبات. وبعد نظرا لأنني لا أستخدم JRURY أو NOKOGIRI، فأنا غير متأكد حقا كيف سيعمل، لكن أفضل تخمين هو:

على الأرجح، تحتاج إلى ثنائيات ويندوز (DLLs) libxml2. و libxslt. بحد أدنى قد تكون هناك حاجة إلى ثنائيات Windows الأخرى وتتوفر في نفس المكان. وبعد سترغب في تثبيت DLLS في مكان ما في المسار الخاص بك، أو الأفضل بعد في نفس الدليل مثل JRUBY القابل للتنفيذ (يبدو وكأنه "D: /jruby-1.3.1/bin"). (إذا لم ينجح ذلك، فربما قد يعمل شكل جافا من المكتبات مثل libxmlj، لكنني أشك في ذلك - ربما تحتاج إلى أصحاب النوافذ.)

أتوقع أن تحصل عليك في طريقك إلى العمل.

نصائح أخرى

هناك الآن نسخة Java النقية التي يمكن تشغيلها على Windows أيضا.

gem install nokogiri --pre

وجدت هنا

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

صحيح أنك تحتاج إلى DLLs XML2 / LIBXSLT في مسارك.

ومع ذلك، فقد وجدت أنه من الضروري التحديث إلى JRUBY-1.4.0RC2 (لبعض التحسينات FFI وأعتقد).

أيضا، تحتاج إلى تحديث إلى أحدث Nokogiri 1.3.3 وتطبيق الالتزام التالي:

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

أو تثبيت Nokogiri من جذع جيثب.

آمل أن يكون هذا مفيدا.

روابط خلفية مفيدة:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top