JRuby + Warbler:只要需要bson gem,jar文件就会爆炸

时间:2012-12-07 23:40:21

标签: gem jruby bson warbler

我想我可能在Warbler中发现了一个错误,但我想在这里发布这个问题以防万一我做错了。简而言之,任何尝试将需要“bson”gem的jruby应用程序打包到带有warbler的.jar文件中的尝试都会失败。这是我每次都得到的错误:

LoadError: no such file to load -- jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/../ext/java/jar/mongo-2.6.5 ...

这是在OS X或Linux上重现问题的一组非常简单的步骤:

制作一个'wartest'目录并加入其中

使用bundler,创建一个名为'wartest'的新jruby-1.6.7.2 gemset。然后'rvm使用jruby-1.6.7.2@wartest'

安装warbler和bundler:

jruby --1.9 -S gem install warbler
jruby --1.9 -S gem install bundler

并确认它有效:

which warble
#=> /Users/jstokes/.rvm/gems/jruby-1.6.7.2@wartest/bin/warble

现在创建以下两行Gemfile:

#Gemfile
source 'http://rubygems.org'
gem 'bson'

现在'捆绑安装'

现在创建一个bin目录并创建文件bin / main.rb。然后粘贴以下内容:

#bin/main.rb
require 'bson'
puts 'It worked!'

此时,我们已准备好创建jar文件。

jruby --1.9 -S warble jar
#=> rm -f wartest.jar
#=> Creating wartest.jar

现在是时候了:

java -jar wartest.jar
#=> It worked!

那么问题是什么?问题是,如果你换到另一个gemset,或者使用系统ruby,它会爆炸。观察:

rvm use system
#=> Now using system ruby.
java -jar wartest.jar
LoadError: no such file to load -- jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/../ext/java/jar/mongo-2.6.5
  require at org/jruby/RubyKernel.java:1027
  require at jar:file:/var/folders/xr/nmvhn6x566v6xkw9l7pgpkj40000gn/T/jruby5567740032767770706extract/jruby-stdlib-1.7.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:36
   (root) at jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/bson.rb:53
  require at org/jruby/RubyKernel.java:1027
   (root) at jar:file:/var/folders/xr/nmvhn6x566v6xkw9l7pgpkj40000gn/T/jruby5567740032767770706extract/jruby-stdlib-1.7.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:1
  require at jar:file:/var/folders/xr/nmvhn6x566v6xkw9l7pgpkj40000gn/T/jruby5567740032767770706extract/jruby-stdlib-1.7.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:60
     load at org/jruby/RubyKernel.java:1046
   (root) at file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/wartest/bin/main.rb:1
  require at org/jruby/RubyKernel.java:1027
   (root) at file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/META-INF/main.rb:1
   (root) at file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/META-INF/main.rb:1

如果我回到jar和xf wartest.jar,并进入gems / bson-1.8.0-java目录,则mongo-2.6.5.jar文件存在且位于正确的位置。但由于一些疯狂的原因,它无法找到。在Ubuntu和OS X上每次都会发生这种情况。如果有人知道我做错了什么,请告诉我。否则我会提交错误报告。

如果我提交错误报告,其错误是什么?我认为这是一个较吵的小虫,但除了bson(和mongo,这取决于bson)之外,我没有看到任何其他宝石。

0 个答案:

没有答案