2017-07-28 17 views
1

では正常に実行されません。私は、Javaでそれを実行したい:`hash`は、私は次の行でスクリプトを持っているプロセス

new ProcessBuilder("script.sh", "0").start().waitFor()

gitが発見されていないため、プロセスは常に(それがインストールされているため)、それはbashで完全に正常に動作にもかかわらず、終了します。

EDIT:command -vRuntime.getRuntime().exec(..)と同じ(すべての組み合わせ)

+1

私はJavaがシステムサブプロセスを呼び出す方法に慣れていませんが、 'PATH'変数は新たに作成されたコンテキストで供給されていますか?たぶん 'bash script.sh'を試してみませんか? – Aserre

+0

@Aserre私はまた試みました: '新しいProcessBuilder("/bin/bash "、...)'。 'Process.getR()。exec(c、env)'に 'PATH'を設定しても動作しません。私は問題が 'ハッシュ'だと思う。なぜなら、それがうまく動く前に 'sleep 100'が実行されていて、それ以降はうまくいかないからです。 –

+0

@Aserre完全な 'PATH'(' echo $ PATH'のようなもの)が機能しました! –

答えて

0

あなた$PATH変数がProcessBuilder方法によって作成された新しいコンテキストで供給されていないように思えます。

スクリプトは正常に実行し、エラーをスローしません、それは予想外の結果を示していても、hashが認識されているようですが、あなたの呼び出しはどこgit実行

を検索する場所を知っていないことのよう

Javaの関数へのフルパスを使ってスクリプトを書き直してみてください。/usr/bin/git

+0

'echo $ PATH'の出力を' Runtime.getRuntime()。exec(command、new String [] {}) 'で使用してください。 –

関連する問題