0

我正在尝试使用 Java 从 GraphViz 调用 sccmap 命令。

        String command = "/usr/bin/sccmap -S /home/paperclip/Desktop/graph.dot > /home/paperclip/Desktop/scc.dot";
        try {
            Runtime rt = Runtime.getRuntime();
            Process p = rt.exec(command);
            System.out.println("Process exited with code = " + p.waitFor());
            java.io.InputStream is = p.getInputStream();
            java.io.BufferedReader reader = new java.io.BufferedReader(new InputStreamReader(is));
            String s = null;
            while ((s = reader.readLine()) != null) {
                System.out.println(s);
            }
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

这段代码的输出是:

进程退出,代码 = 0

sccmap 函数应该在我指定的位置输出一个点文件。但是,它不像我预期的那样工作。即使 exitValue 为 0,也没有创建点文件。

我尝试在终端中手动使用该命令,它运行良好。我还尝试使用其他命令,例如“ls”,它也可以。为什么此代码不适用于“sccmap”?

我还搜索了一些用于 GraphViz 的 Java API,例如 jGraphViz (http://jgraphviz.sourceforge.net/) 和 graphviz-java-api 在 (http://www.loria.fr/~szathmar/off/projects/ java/GraphVizAPI/index.php),但它们似乎对我不起作用。

仅供参考,我在 Ubuntu 11.10 上,并且已经安装了 GraphViz。

谢谢!

4

1 回答 1

3

>由 shell 解释(它是一个流重定向),它不是应用程序的参数。在这种情况下没有外壳。

试试/usr/bin/sccmap -S -o /home/paperclip/Desktop/scc.dot /home/paperclip/Desktop/graph.dot吧。

于 2012-04-23T08:13:02.260 回答