Java Scala-在特定场景中无法通过终端执行进程
我使用graphviz根据scala程序中传递的消息生成图形。 为了从scala程序内部调用graphviz应用程序,我使用exec()方法(类似于Java)。当我使用以下代码段时,它成功地执行了命令并创建了图形: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) ; 但是,在更改输入和输
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)