首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ProcessBuilder ProcessBuilder java.lang.Exception:

ProcessBuilder ProcessBuilder java.lang.Exception:
EN

Stack Overflow用户
提问于 2014-03-25 19:57:44
回答 1查看 941关注 0票数 0

我试图弄清楚为什么下面的代码会抛出一个

java.lang.Exception:没有这样的文件或目录

异常

代码语言:javascript
运行
复制
        ProcessBuilder send = new ProcessBuilder("/bin/bash","/opt/ftp/scripts/XFER.sh | /opt/ftp/myftp -c /opt/ftp/ftp.conf >> /logging/ftp.log2>&1");
        Process sendProcess = send.start();
        br = new BufferedReader(new InputStreamReader(sendProcess.getErrorStream()));
        builder = new StringBuilder();
        line = null;
        while ( (line = br.readLine()) != null) {
           builder.append(line);
           builder.append(System.getProperty("line.separator"));
        }
        if(!builder.toString().isEmpty()){
            throw new Exception( "ERROR with XFER.sh: "+builder.toString() );
        }   

我尝试过在String中隔离参数,但这也不起作用。有什么想法可以导致这种叠置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-25 20:45:34

我成功地使用了以下代码。也许您必须使用-c选项:

代码语言:javascript
运行
复制
private static int execute(String command) {
    Runtime runtime = null;
    Process process = null;

    int exitValue = -1;
    BufferedInputStream bis = null;

    try {
        runtime = Runtime.getRuntime();

        process = runtime.exec(new String[] { "/bin/bash", "-c", command });
        bis = new BufferedInputStream(process.getInputStream());

        byte[] b = new byte[1892];
        while (bis.read(b) != -1) {
        }

        exitValue = process.waitFor();

        if (bis != null) {
            try {
                bis.close();
            } catch (IOException e) {
            }
        }
        if (process != null) {
            process.destroy();
        }
    } catch (Exception e) {
        //Logging
    }

    return exitValue;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22644981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档