JRuby在哪里寻找脚本?

JRuby在哪里寻找脚本?,ruby,jruby,gem,Ruby,Jruby,Gem,运行命令jruby-S spec会出现以下错误 No such file, directory, or command -- spec spec的位置是路径中的/usr/bin。已安装Rspec。Ruby可以找到脚本。JRuby可以找到rspec gem。那么出了什么问题呢?JRuby将尝试从类路径上的目录加载脚本。您可以通过运行以下命令查看这些内容: jruby -e "puts $:" 在命令行上,可以使用-I选项修改$LOAD_路径。或者使用-r选项添加库。例如: jruby -I/u

运行命令jruby-S spec会出现以下错误

No such file, directory, or command -- spec

spec的位置是路径中的
/usr/bin
。已安装Rspec。Ruby可以找到脚本。JRuby可以找到rspec gem。那么出了什么问题呢?

JRuby将尝试从类路径上的目录加载脚本。您可以通过运行以下命令查看这些内容:

jruby -e "puts $:"
在命令行上,可以使用-I选项修改$LOAD_路径。或者使用-r选项添加库。例如:

jruby -I/usr/bin spec
以下是有关加载路径和类路径的更多信息:


希望这对JRuby的最新版本有所帮助,当使用
-S
选项时,JRuby会在3个不同的位置查找文件:

  • 在当前目录中
  • 在$JRUBY_HOME/bin中
  • 在路径上(非加载路径)
  • 这可以通过在
    /tmp
    中添加一个脚本(这里称为
    test\u it
    ,它只打印
    hello
    )来验证:

    sebastien@greystones:~$ jruby -v 
    jruby 1.6.6.dev (ruby-1.8.7-p357) (2012-01-22 9099561) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_30) [linux-amd64-java]
    sebastien@greystones:~$ jruby -S test_it
    jruby: No such file or directory -- test_it (LoadError)
    sebastien@greystones:~$ export PATH=/tmp:$PATH
    sebastien@greystones:~$ jruby -J-Djruby.debug.scriptResolution=true -S test_it
    Found: /tmp/test_it
    hello
    

    这里的
    debug.scriptResolution
    选项用于告诉我们在哪里找到了脚本。

    如果不起作用,/usr/bin不在加载路径中,也不应该在加载路径中。-我正在使用-S选项,它应该查看PATH环境变量,但它没有。显然,
    jruby-S
    只查看
    $jruby\u HOME/bin
    ,而不查看路径,尽管文档说它确实查看路径。
    cp/usr/bin/spec~/git/jruby/bin
    ,而且它可以工作,但这确实是一个创可贴的解决方案。这个问题还没有得到正确的答案,我仍然对其中一个问题感兴趣。只是添加了这个答案来提供一个最新的答案来解决这个问题,因为我最近遇到了类似的问题。不确定最初的问题是否是由使用较旧版本的JRuby引起的?