Jon*_*kes 6 gem jruby warbler bson
我想我可能在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 ...
Run Code Online (Sandbox Code Playgroud)
这是在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
Run Code Online (Sandbox Code Playgroud)
只是为了确认它的工作原理:
which warble
#=> /Users/jstokes/.rvm/gems/jruby-1.6.7.2@wartest/bin/warble
Run Code Online (Sandbox Code Playgroud)
现在创建以下两行Gemfile:
#Gemfile
source 'http://rubygems.org'
gem 'bson'
Run Code Online (Sandbox Code Playgroud)
现在'捆绑安装'
现在创建一个bin目录并创建文件bin/main.rb.然后粘贴以下内容:
#bin/main.rb
require 'bson'
puts 'It worked!'
Run Code Online (Sandbox Code Playgroud)
此时,我们已准备好创建jar文件.那样做
jruby --1.9 -S warble jar
#=> rm -f wartest.jar
#=> Creating wartest.jar
Run Code Online (Sandbox Code Playgroud)
现在是时候了:
java -jar wartest.jar
#=> It worked!
Run Code Online (Sandbox Code Playgroud)
所以有什么问题?问题是,如果你换到另一个gemset,或者使用系统ruby,它会爆炸.注意:
rvm use system
#=> Now using system ruby.
java -jar wartest.jar
Run Code Online (Sandbox Code Playgroud)
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)之外,我没有看到任何其他宝石.
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |