有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

output是文件所在的目录。存在点文件。 该命令基于Graphviz图形可视化软件工作


共 (1) 个答案

  1. # 1 楼答案

    参数对于命令Runtime.exec无效。另外,我建议使用^{},如下所示

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

    然后,为了管理重定向,您需要使用^{}方法

    示例:

    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();
            }
        }
    }