Как использовать нокогири от Jruby на Windows? - PullRequest
1 голос
/ 19 сентября 2009

Я получаю следующую ошибку при попытке использовать 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

Кажется, это проблема несовместимости Jruby с собственными расширениями (libxml2), однако я нашел обходной путь , но не смог найти libexslt.so и не уверен, куда его поместить. У кого-нибудь есть успешный опыт использования jruby + windows + nokogiri + libexslt? ТИА

Ответы [ 3 ]

1 голос
/ 29 октября 2009

Это правда, что вам нужны dll xml2 / libxslt на вашем пути.

Однако я посчитал необходимым обновить Jruby-1.4.0RC2 (я полагаю, что для некоторых улучшений FFI).

Кроме того, необходимо обновить приложение до последней версии 1.3.3 и вручную применить следующий коммит:

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

ИЛИ установите nokogiri из ствола github.

Надеюсь, это полезно.

Полезные справочные ссылки:

1 голос
/ 25 февраля 2011

В настоящее время существует чистая версия Java, которая может работать и в Windows.

gem install nokogiri --pre

Найдено здесь

https://github.com/tenderlove/nokogiri/wiki/pure-java-nokogiri-for-jruby
1 голос
/ 02 октября 2009

Обходной путь, который вы нашли, - для системы UNIX; .so файл является загружаемым модулем, похожим на DLL в Windows. И вы не можете использовать мягкую ссылку в Windows (команда ln -s), так что это не применимо в вашей ситуации.

Тем не менее, у вас есть та же проблема в том, что nokogiri не может найти ваши библиотеки libxml2, libxslt и libexslt . Поскольку я не использую JRuby или nokogiri, я действительно не уверен, как это будет работать, но мое лучшее предположение следующее:

Скорее всего, вам нужны бинарные файлы Windows (DLL) libxml2 и libxslt как минимум; другие связанные двоичные файлы Windows могут быть необходимы и доступны в том же месте 1013 *. Вы захотите, чтобы библиотеки DLL были установлены где-то на вашем пути, или, что еще лучше, в том же каталоге, что и исполняемый файл JRuby (выглядит как «D: /jruby-1.3.1/bin»). (Если это не сработает, возможно, сработала бы нативная форма библиотек Java, таких как libxmlj, но я сомневаюсь в этом - вам, вероятно, нужны нативные для Windows.)

Я ожидаю, что это приведет вас к работе.

...