JRuby gem不可用,但JRuby仍然可以运行脚本

时间:2014-12-29 20:21:08

标签: jruby warbler

我使用ruby创建自己的日志监视器脚本,并使用Warbler将其与JRuby一起编译成JAR。我正在运行JRuby 1.7.17 64bit。当我运行脚本时,我尝试使用可用于MRI的gem optparse和JRuby:

monitor_log>] jruby lib\monitor_log\log_watch.rb --help
Usage: log_watch [options]
    -f, --file FILE                  Input file to monitor
    -p, --pattern PATTERN            Pattern to match in the file
    -h, --help                       Show this screen

所以我尝试使用JBundler运行它来查看JRuby是否会运行我的gem,

monitor_log>] jbundle exec jruby bin/log_watch.rb --help
Usage: log_watch [options]
    -f, --file FILE                  Input file to monitor
    -p, --pattern PATTERN            Pattern to match in the file
    -h, --help                       Show this screen

所以,然后我尝试使用Warbler将其编译成JAR。我得到了:

monitor_log>] warble executable jar
warble aborted!
Bundler::GemNotFound: Could not find gem 'optparse (>= 0) java' in the gems available on this machine.
c:\Ruby\jruby-1.7.17\bin\warble:23:in `(root)'
(See full trace by running task with --trace)

我认为JRuby默认没有这个,所以我试着搜索宝石,

monitor_log>] jruby -S gem search optparse
*** REMOTE GEMS ***

micro-optparse (1.2.0)
optparse-command (0.1.8)
optparse-defaults (0.1.0)
optparse-lite (0.0.0)
optparse-off (0.0.1)
optparse-pathname (0.0.1)
optparse-range (0.0.3)
optparse-simple (0.4.2)
optparse_ex (0.0.4)
pickled_optparse (0.1.1)
remi-optparse-simple (0.1.0)
rubysl-optparse (2.0.1)
subcommand-optparse (0.0.3)

但没有任何明显的突出表现出来。我有什么不正确的事吗?我将gem optparse添加到.gemspec作为开发依赖项和运行时依赖项。我不应该这样做,还是我还缺少其他东西?

1 个答案:

答案 0 :(得分:0)

删除

spec.add_development_dependency "optparse"
spec.add_runtime_dependency "optparse"

完成了这个技巧,现在gem编译成一个可运行的JAR文件。