私は、graphviz を使用して、scala プログラムで渡されたメッセージに基づいてグラフを生成しています。scala プログラム内から graphviz アプリケーションを呼び出すには、exec() メソッド (Java と同様) を使用します。以下のコード スニペットを使用すると、コマンドが正常に実行され、グラフが作成されました。
var cmd: String = "dot -Tpng Graph.dot -o Graph.png"
var run: Runtime = Runtime.getRuntime() ;
var pr: Process = run.exec(cmd) ;
ただし、入力ファイルと出力ファイルのパスを変更すると実行に失敗します(以下に示すように、入力ファイルと出力ファイルが存在するディレクトリを含めました)
def main(args: Array[String]): Unit = {
var DirectoryName: String = "Logs"
var GraphFileName: String = DirectoryName + File.separator + "Graph.dot"
val GraphFileObj: File = new File(GraphFileName)
// var cmd: String = "dot -Tpng Graph.dot -o Graph.png"
var cmd: String = "dot -Tpng \"" + GraphFileObj.getAbsolutePath + "\" -o \"" + DirectoryName + File.separator + "Graph.png\"" ;
println(cmd)
var run: Runtime = Runtime.getRuntime() ;
var pr: Process = run.exec(cmd) ;
}
端末から同じコマンドを実行すると、適切な出力が得られます。足りないものを見つけるのを手伝ってくれませんか?