【问题标题】:how to execute a command in scala?如何在scala中执行命令?
【发布时间】:2013-12-06 15:15:30
【问题描述】:

我想执行这个命令“dot -Tpng overview.dot > overview.png”,Graphviz用来生成图片。

scala中的代码:

Process(Seq("dot -Tpng overview.dot > overview.png"))

它不起作用。 我也想在 scala 中打开这个图像。我在 Ubuntu 下工作。默认情况下,图像将由图像查看器打开。但是我在终端输入“eog overview.png”,却报错

** (eog:18371): WARNING **: The connection is closed

因此,我不知道如何让 scala 打开这个图像。

提前致谢。

【问题讨论】:

标签: scala


【解决方案1】:

您不能在命令字符串中使用> 重定向stdout。您应该使用 #>#| 运算符。请参阅processdocumentation 中的示例。

这会将test 写入test.txt

import scala.sys.process._
import java.io.File

// use scala.bat instead of scala on Windows
val cmd = Seq("scala", "-e", """println(\"test\")""") #> new File("test.txt")
cmd.!

在你的情况下:

val cmd = "dot -Tpng overview.dot" #> new File("overview.png")
cmd.!

或者只是这个(因为dot 接受输出文件名为-ooutfile):

"dot -Tpng overview.dot -ooverview.png".!

【讨论】:

  • ,感谢您的帮助。但现在日食报告“overview.png:权限被拒绝”。我想我应该使用命令“su root”。但我不知道如何在代码中输入我的密码。你知道如何解决这个问题吗?
  • @city:您应该只指定可以使用的文件名 id 目录。例如:new File("/home/city/overview.png").
  • @city: 或者你可以从 root 运行 scala
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2022-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多