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」で機能しないのはなぜですか?

また、jGraphViz (http://jgraphviz.sourceforge.net/) や graphviz-java-api (http://www.loria.fr/~szathmar/off/projects/) など、GraphViz 用の Java API もいくつか検索しました。 java/GraphVizAPI/index.php) ですが、私にはうまくいかないようです。

参考までに、私は Ubuntu 11.10 を使用しており、GraphViz は既にインストールされています。

ありがとう!

4

1 に答える 1

3

>シェルによって解釈され(ストリームリダイレクトです)、アプリケーションへの引数ではありません。この状況ではシェルはありません。

/usr/bin/sccmap -S -o /home/paperclip/Desktop/scc.dot /home/paperclip/Desktop/graph.dot代わりに試してください。

于 2012-04-23T08:13:02.260 に答える