下面的代码在eclipse中使用运行时执行不起作用,但是同样的工作使用来自eclipse项目根目录的命令行执行。我尝试过不同的命令,例如使用记事本创建文本文件,这也可以使用Runtime。但是下面的命令不起作用。这有什么特别的原因吗?
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("dot -Tpng output//vowelWithGainRatio.dot > output.png");
output是.dot文件所在的目录。 该命令基于Graphviz图形可视化软件。
答案 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();
}
}
}