0

我无法从我的 java 代码中调用 shell 脚本。这是我的代码。谁能让我知道我在这里缺少什么。

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

如果脚本有输出,您需要获取返回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 回答
0

如果您获得 IO 执行,请检查您的脚本路径

于 2013-06-19T14:05:23.277 回答
0

尝试在脚本名称前使用 sh

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