2014-02-14 22 views
0

我試圖使用斑馬線的更新版本,並試圖從ecin/zxing gem與這些文件的3.0版本快照從https://oss.sonatype.org/content/repositories/snapshots/com/google/zxing/core/找不到MultiFormatReader類斑馬線core.jar添加文件

更換 core.jarjavase.jar文件

即使在我做jar -tf時,在新的jar中出現類,我在第一課嘗試引用(com/google/zxing/MultiFormatReadercore.jar文件)中獲得NameError。該軟件使用舊的jar文件運行文件。

關於如何進一步調試的建議?

更新:我創建了一個新的gemset,其中只包含zxing並重現相同的行爲,如下所示。

MacbookAir1:javlats2 palfvin$ irb 
jruby-1.7.10 :001 > require 'zxing' 
NameError: missing class or uppercase package name (`com.google.zxing.MultiFormatReader') 
    from org/jruby/javasupport/JavaUtilities.java:54:in `get_proxy_or_package_under_package' 
    from file:/Users/palfvin/.rvm/rubies/jruby-1.7.10/lib/jruby.jar!/jruby/java/java_package_module_template.rb:14:in `method_missing' 
    from /Users/palfvin/.rvm/gems/[email protected]/gems/zxing-0.3.1/lib/zxing/decoder.rb:12:in `ZXing' 
    from /Users/palfvin/.rvm/gems/[email protected]/gems/zxing-0.3.1/lib/zxing/decoder.rb:3:in `(root)' 
    from org/jruby/RubyKernel.java:1083:in `require' 
    from /Users/palfvin/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1:in `(root)' 
    from /Users/palfvin/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from org/jruby/RubyKernel.java:1083:in `require' 
    from /Users/palfvin/.rvm/gems/[email protected]/gems/zxing-0.3.1/lib/zxing.rb:2:in `(root)' 
    from /Users/palfvin/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1:in `(root)' 
    from org/jruby/RubyKernel.java:1119:in `eval' 
    from /Users/palfvin/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135:in `require' 
    from (irb):1:in `evaluate' 
    from org/jruby/RubyKernel.java:1519:in `loop' 
    from org/jruby/RubyKernel.java:1282:in `catch' 
    from org/jruby/RubyKernel.java:1282:in `catch' 
    from /Users/palfvin/.rvm/rubies/jruby-1.7.10/bin/irb:13:in `(root)'jruby-1.7.10 :002 > 
+0

core.jar的位置有改變嗎?確保它的位置在你的類路徑中。 – Alan

+0

這當然是那裏。你可能實際上並沒有在你的類路徑中包含jar文件。 –

+0

@Alan不,我沒有做任何改變。該應用程序運行良好與舊的jar文件。 –

回答

1

本次會議由IRB的工作,所以類是存在於JAR的新版本:

> require 'core-3.0.0-20140213.213916-7.jar' 
> com.google.zxing.MultiFormatReader.new 
=> #<Java::ComGoogleZxing::MultiFormatReader:0x6e644f41> 

我的猜測是,你有沒有取代了正確的方式JAR,不知何故。我這樣做是爲了「升級」的JAR:

pushd ~/.rvm/gems/jruby-1.7.10/gems/zxing-0.3.1/lib/zxing/ 
mv core.jar orig.jar 
mv ~/Downloads/core-3.0.0-20140213.213916-7.jar core.jar 

然後是能夠做到這一點:

> require 'zxing' 
> ZXing.decode 'http://2d-code.co.uk/images/bbc-logo-in-qr-code.gif' 
=> "http://bbc.co.uk/programmes" 

我不知道2.x和3.x API之間的差異是當然,但我肯定可以在新的JAR中放棄舊的JAR。

+0

這個班完全沒有區別,是的。 –

+0

@Shepmaster謝謝你在這方面的努力。我更新了我的問題,以顯示我所看到的具體情況。我完全按照使用單獨的gemset替換了jar文件。 –

+0

@Shepmaster我也可以用CRuby 2.0 –

0

我發現這與我的PATH變量指向的Java版本有關。儘管我很久以前在我的Mac上安裝了第7版,但我從未更新過我的.bash_profile,併爲各種命令行操作提取了6。當我將PATH改爲7時,問題就消失了。

還有仍然存在一些未解之謎,但是,具體如下:

  • 當我貼我的問題,有一個名爲(-6.jar)的zxing snapshot directories,好像他們是專爲6版本的jar文件,但他們不再有(不到24小時後)
  • 當我想這些-6.jar文件,他們也失敗了
  • 我無法找到關於Java 6和Java 7之間一般不兼容網絡上的任何會解釋我得到的錯誤