运行时exec不执行以下命令。可能是什么原因?

时间:2017-05-11 12:39:16

标签: java

下面的代码在eclipse中使用运行时执行不起作用,但是同样的工作使用来自eclipse项目根目录的命令行执行。我尝试过不同的命令,例如使用记事本创建文本文件,这也可以使用Runtime。但是下面的命令不起作用。这有什么特别的原因吗?

    Runtime rt = Runtime.getRuntime();
    Process pr = rt.exec("dot -Tpng output//vowelWithGainRatio.dot > output.png");

output是.dot文件所在的目录。 该命令基于Graphviz图形可视化软件。

1 个答案:

答案 0 :(得分:0)

该参数对命令Runtime.exec无效。另外,我建议使用ProcessBuilder代替以下。

Process p = new ProcessBuilder("C:/Graphviz2.38/bin/dot", "-Tpng", "output//vowelWithGainRatio.dot").start();

然后,为了管理重定向,您需要使用ProcessBuilder.redirectOutput()方法。

示例:

File output = new File("output.png");
p.redirectOutput(Redirect.appendTo(output));

修改

完整示例:

Main.java

import java.io.File;
public class Main {
    public static void main(String[] args) {
        ProcessBuilder pb = new ProcessBuilder("echo", "Hello World !");
        File log = new File("log");
        pb.redirectOutput(ProcessBuilder.Redirect.to(log));
        try {
            Process p = pb.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}