0

Java コードからシェル スクリプトを呼び出すことができません。これが私のコードです。ここで何が欠けているのか誰か教えてください。

protected boolean shellExecute() throws InterruptedException {
    try {
        Process p = Runtime.getRuntime().exec("/home/baibhav/try_scripts/javacall.sh");
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
    return true;
}
4

3 に答える 3

0

スクリプト名の前に sh を使用してみてください

Process p = Runtime.getRuntime().exec("sh /home/baibhav/try_scripts/javacall.sh");
于 2013-06-19T14:01:32.473 に答える
0

IO execption を取得している場合は、スクリプトのパスを確認してください

于 2013-06-19T14:05:23.277 に答える
0

スクリプトに出力がある場合は、返されたProcess' 出力を取得して読み取る必要があり、プロセスはブロックされません。

Process p = Runtime.getRuntime().exec("/home/baibhav/try_scripts/javacall.sh");
InputStream scriptStdout = p.getInputStream();
// Read from input stream and proecess it.

// In finally block:
scriptStdout.close();

例外がスローされたのか、それともシステムがハングアップしたのか、あなたは言いませんでした。ハングした場合は、おそらくそれが原因です。

また、ProcessBuilder代わりに使用することを検討してください。

于 2013-06-19T14:17:01.027 に答える