小编ant*_*nio的帖子

Jruby Gems-in-a-jar问题

我试图在ruby中编写一些代码(使用jruby),用jrubyc编译成java字节码,并部署到远程机器上,它将在JVM上运行(没有可用的ruby).

只要我乐意坚持标准的jruby库,一切都很好.正如在jruby网站上所解释的,我只是将jruby-complete.jar库复制到远程机器并在运行时将其包含在类路径中.我解雇我编译的脚本,它的工作原理:很酷!

当我需要一些其他库(通常是rubygems)来运行我的脚本时,问题就开始了.
我知道很酷的东西,比如rawr,我成功测试了 - 把你所需要的东西放在一个包中.然而,这不是我正在寻找的解决方案:我将有许多小脚本独立运行,我不希望它们中的每一个都增长到至少10 MB只是因为我疯狂地在每个中包含jruby-complete.jar他们.

我想要的是为我需要使用的每个库编译一个.jar,将它们全部放在远程机器上的公共文件夹中,并在运行我编译的jruby脚本时在运行时将它们包含在类路径中JVM.
这就是说,我试着按照这里的说明进行操作:http: //blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
我尝试了完全显示的例子在那里,有"慢性"宝石.一步一步走:

  1. 在本地安装gem:java -jar jruby-complete-1.1.6.jar -S gem install -i ./chronic chronic --no-rdoc --no-ri
  2. 将它包装成罐子:jar cf chronic.jar -C chronic.
  3. 编写两行测试脚本,将其保存为testt.rb:

    需要'慢性'
    Chronic.parse('明天')

  4. 编译:jrubyc testt.rb

  5. 使用以下命令运行生成的java类testt.class(将jruby-complete.jar和chronic.jar放在与java类相同的文件夹中):java -cp.:/ jruby-complete.jar:./ chronic.jar testt

我收到以下错误:

异常在线程"主要"文件:/Users/ave2/NetBeansProjects/jrubywatir/lib/jruby-complete.jar /METAINF/jruby.home/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.rb:1:在`const_missing'中:
来自testt.rb的未初始化常量Chronic(NameError):2
...内部jruby堆栈
从Module.const_missing(testt.rb:2)中
脱离(未知).(未知)(:1)

我真的不明白我做错了什么,我完全坚持这个.我是Ruby中的菜鸟,更习惯Python:不要错过转换异教徒的机会!:-) 谢谢.

ruby rubygems jruby gems-in-a-jar

9
推荐指数
1
解决办法
3267
查看次数

标签 统计

gems-in-a-jar ×1

jruby ×1

ruby ×1

rubygems ×1