2010-09-03 9 views
1
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 
>> 

Comment est-ce possible? En outre, comment pourrais-je écrire cela dans un script ruby, cependant? J'ai un fichier que je veux exécuter appelé test.rb, qui contient les éléments suivants:nécessite jruby semble fonctionner et échouer simultanément

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

Je l'exécuter à partir de la ligne de commande comme ceci:

ruby test.rb 

Dans ce contexte, comment Dois-je inclure Java? Ou est-ce même possible?

Répondre

1

Vous utilisez la gemme JRuby, plutôt que la JRuby elle-même.

JRuby (que ZXing contrôle sur la ligne 1) est un module qui est défini uniquement après que vous avez require 'java' dans JRuby.

Cela devrait être clairement indiqué dans la documentation de ZXing, mais cela ne semble pas être le cas.

est ici la sortie de test lorsque je lance le suivant du clone code source 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