Вопрос

Я получаю следующую ошибку при попытке использовать 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.И вы не можете использовать softlink в Windows (the ln -s команда), так что это неприменимо в вашей ситуации.

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

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

Я ожидаю, что это поможет вам на вашем пути к работе.

Другие советы

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

gem install nokogiri --pre

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

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

Это правда, что вам нужны библиотеки DLL xml2 / libxslt в вашем path.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top