-1

ruby コードから Java プログラムを実行しようとしています。

私のコードは次のようなものです:

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


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

私の問題は、コマンドがどちらの方法でも正常に実行されないことです。%x、バッククォートがサブシェルで実行されることはわかっているため、おそらくいくつかの環境変数が欠落しています。ただし、Kernel.system、Kernel.exec が成功することを期待していました。

シェルに直接入力すると、コマンドは正常に実行されます。これをデバッグするのに何か助けはありますか?

ありがとう!

4

1 に答える 1

0

問題は、作成していたファイルを閉じていなかったことが判明しました。

ルビースクリプトがすでに終了していたので、シェルから直接、または.shから直接呼び出していたときは、どうやらそれで問題なかったようです。

ただし、Ruby スクリプトからこれを呼び出すと、ファイルにアクセスできず、問題が発生します。

結論: ファイルを閉じないでください。

于 2011-12-01T20:11:25.850 に答える