我正在尝试使用 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。
谢谢!