从java运行可执行文件失败

时间:2014-04-09 07:49:45

标签: java bash

我正在尝试在我知道存在于该目录中的文件上运行mdb-export。但它似乎没有执行。 “ls -l”将确保java代码正常工作。该命令将从bash完美执行。

失败的命令是

/usr/bin/mdb-export -Q -d ';' -D '%Y-%m-%d %H:%M:%S' /home/jocke/viking.mdb resultat >> resultat.csv

    private void runCommand() {
        try {
            String workingdirectory=System.getProperty("user.dir"); 
            Runtime runtime = Runtime.getRuntime();
            //Process process = runtime.exec("/usr/bin/mdb-export -Q -d ';' -D '%Y-%m-%d %H:%M:%S' /home/jocke/viking.mdb resultat >> resultat.csv");
            Process process = runtime.exec("/usr/bin/mdb-export /home/jocke/viking.mdb resultat >> resultat.csv");
            //
            process.waitFor();
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;

            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
}

1 个答案:

答案 0 :(得分:2)

您不能以这种方式使用输出重定向。改为使用ProcessBuilder

ProcessBuilder pb = new ProcessBuilder("/usr/bin/mdb-export", "/home/jocke/viking.mdb", "resultat");
File csv = new File("resultat.csv");
pb.redirectOutput(Redirect.appendTo(csv);
Process p = pb.start();