/ / require jruby scheint gleichzeitig zu funktionieren und zu versagen - ruby, jruby

Require Jruby scheint gleichzeitig zu funktionieren und zu versagen - Ruby, Jruby

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
>>

Wie ist das möglich?

Außerdem, wie würde ich das in einem Ruby-Skript schreiben? Ich habe eine Datei namens test.rb, die Folgendes enthält:

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

Ich führe es von der Kommandozeile aus so aus:

ruby test.rb

Wie schließe ich in diesem Zusammenhang Java ein? Oder ist das überhaupt möglich?

Antworten:

1 für die Antwort № 1

Sie verwenden den JRuby-Edelstein und nicht den JRuby selbst.

JRuby (was ZXing in Zeile 1 überprüft) ist ein Modul, das erst nach Ihnen definiert wird require "java" in JRuby.

Dies sollte in der Dokumentation von ZXing klar zum Ausdruck gebracht werden, scheint es aber nicht zu sein.

Hier ist die Testausgabe, wenn ich Folgendes vom geklonten ZXing-Quellcode aus führe:

$ 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