2012-04-23 2 views
0

Javaを使用してGraphVizからsccmapコマンドを呼び出そうとしています。Javaを使用して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(); 
     } 

このコードスニペットの出力がある:

プロセスsccmap関数が出力するIが持っている場所にドットファイルを想定しているコード= 0

で終了指定された。しかし、私は期待どおりに動作しません。 exitValueが0として指定されていても、ドットファイルは作成されませんでした。

ターミナルで手動でコマンドを試してみましたが、それは完全に動作します。私も "ls"のような他のコマンドを使ってみました。なぜこのコードは "sccmap"で動作しないのですか?

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

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

ありがとうございます!

+1

代わりに、/ usr/bin/sccmap -S -o /home/paperclip/Desktop/scc.dot/home/paperclip/Desktop/graph.dot'を実行してください。 –

+0

奇妙なことに、これは私のために働く。ありがとうございました! – paperclip

答えて

3

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

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

+0

これは私のために働く。どうもありがとう! – paperclip

関連する問題