我正在尝试用ruby编写一些代码(使用jruby),用jrubyc编译成java字节码,然后部署到远程机器上,它将在JVM上运行(没有可用的ruby)。
只要我乐意坚持标准的jruby库,一切都很好。正如在jruby网站上所解释的,我只是将jruby-complete.jar库复制到远程机器并在运行时将其包含在类路径中。我解雇了我编译的脚本,它的工作原理:很酷!
当我需要一些其他库(通常是rubygems)来运行我的脚本时,问题就开始了 我知道很酷的东西,比如rawr,我成功测试了 - 把你所需要的东西放在一个包中。 然而,这不是我正在寻找的解决方案:我将有许多小脚本独立运行,我不希望它们中的每一个都增长到至少10 MB只是因为我疯狂地在每个中包含jruby-complete.jar它们。
我想要为我需要使用的每个库编译一个.jar,将它们全部放在远程机器上的公共文件夹中,并在运行我编译时在运行时将它们包含在类路径中JVM上的jruby脚本
这就是说,我试着按照这里的说明进行操作:http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
我尝试了那里显示的那个例子,带有“慢性”宝石。一步一步走:
编写两行测试脚本,将其另存为testt.rb:
要求'慢性' Chronic.parse( '明天')
编译:jrubyc testt.rb
我收到以下错误:
线程“main”文件中的异常:/Users/ave2/NetBeansProjects/jrubywatir/lib/jruby-complete.jar!/METAINF/jruby.home/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.rb :1:在`const_missing'中:未初始化的常量Chronic(NameError)
来自testt.rb:2
... ...内部jruby堆栈...
来自Module.const_missing(testt.rb:2)
来自(未知)。(未知)(:1)
我真的不明白我做错了什么,我完全坚持这个。我是Ruby中的菜鸟,更习惯于Python:不要错过转换异教徒的机会! :-) 谢谢。
答案 0 :(得分:2)
据我所知,看起来你没有做错什么,而且你可能遇到了一个错误。您可以尝试使用更新版本(http://jruby.org/download)的示例,如果仍然看到问题,请在http://bugs.jruby.org/创建错误?感谢。
答案 1 :(得分:1)
将它放在测试脚本的顶部:
require 'rubygems'