ruby backtick,kernel.system,exec,命令不成功

时间:2011-12-01 03:17:02

标签: java ruby unix jruby subshell

我正在尝试从我的ruby代码执行java程序。

我的代码类似于:

    cmd = "java -cp \"path/lib/*\" com.blah.blah"


#    %x[#{cmd}]
#    `#{cmd}`
#    Kernel.system(cmd)
    Kernel.exec(cmd)

我的问题是命令无法以任何方式成功运行。我知道%x,反引号在子shell中运行,所以可能缺少一些env变量。 但是我希望Kernel.system,Kernel.exec能够成功。

如果我直接在shell中输入命令,该命令运行正常。有没有帮助调试这个?

谢谢!

1 个答案:

答案 0 :(得分:0)

原来问题是我没有关闭我正在创建的文件。

显然,当我直接从shell调用它或直接从.sh调用它时,因为ruby脚本已经退出了。

然而,当我从Ruby脚本调用它时,它将无法访问该文件并会产生问题。

底线:关闭你的文件,否则半天工作!