Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scala-在特定场景中无法通过终端执行进程_Java_Scala_Exec_Graphviz_Dot - Fatal编程技术网

Java Scala-在特定场景中无法通过终端执行进程

Java Scala-在特定场景中无法通过终端执行进程,java,scala,exec,graphviz,dot,Java,Scala,Exec,Graphviz,Dot,我使用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) ; 但是,在更改输入和输

我使用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) ;
但是,在更改输入和输出文件的路径后,它无法执行(我只包括了一个目录,输入文件和输出文件位于其中,如下所示)


当通过终端执行相同的命令时,会给出正确的输出。你能帮我找到我缺少的东西吗?

exec不是shell…例如。引用不会像您预期的那样工作,因此您的路径(可能包含空格等)将不会像您预期的那样处理。该命令将使用StringTokenizer分解,您的文字引号将是…嗯..文字

改用exec的形式,它接受一个数组,这样就可以正确地标记命令

val args = Array[String]("dot", "-Tpng", GraphFileObj.getAbsolutePath, ...);
run.exec(args)

@Faiz我正在使用Ubuntu12.04你会得到什么样的错误?不使用
-@tony-k的答案是正确的(用Java或Scala)
val args = Array[String]("dot", "-Tpng", GraphFileObj.getAbsolutePath, ...);
run.exec(args)