Требуется Jruby, кажется, чтобы работать и терпеть неудачу одновременно - PullRequest
1 голос
/ 03 сентября 2010
John-Breedloves-Mac-mini:~ john_breedlove$ irb
>> require 'jruby'
=> true
>> require 'zxing'
RuntimeError: ZXing requires JRuby
 from /Library/Ruby/Gems/1.8/gems/zxing-0.1.1/lib/zxing.rb:1
 from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
 from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require'
 from (irb):2
>> 

Как это возможно?

Кроме того, как бы я написал это в сценарии ruby?У меня есть файл, который я хочу выполнить с именем test.rb, который содержит следующее:

require 'rubygems'
require 'jruby'
require 'zxing'
ZXing.decode 'test.png'

Я выполняю его из командной строки следующим образом:

ruby test.rb

В этомконтекст, как я могу включить Java?Или это вообще возможно?

1 Ответ

1 голос
/ 03 сентября 2010

Вы используете гем JRuby, а не сам JRuby.

JRuby (который ZXing проверяет в строке 1) - это модуль, который определяется только после require 'java' в JRuby.

Это должно быть четко указано в документации ZXing, но, похоже, это не так.

Вот результат теста, когда я запускаю следующее из клонированного исходного кода ZXing:

$ ruby -v -I lib -r zxing -e 'p 0'
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
./lib/zxing.rb:1: ZXing requires JRuby (RuntimeError)
$ jruby -I lib -r zxing -e 'p 0'
/Users/asari/Development/src/zxing.rb/lib/zxing.rb:1: ZXing requires JRuby (RuntimeError)
    from /Users/asari/Development/src/zxing.rb/lib/zxing.rb:1
    ...internal jruby stack elided...
    from (unknown).(unknown)(/Users/asari/Development/src/zxing.rb/lib/zxing.rb:1)
    from (unknown).(unknown)(:1)
$ jruby -r java -I lib -r zxing -e 'p 0'
0
...