使用scala.sys.process转到scala中的特定路径

时间:2015-08-19 08:05:30

标签: scala unix deployment playframework-2.2

我必须转到应用程序的路径来部署它,我尝试使用scala.sys.process并执行"cd /home/path/somepath" !

它抛出异常,任何人都可以指导我如何进入目录,由于运行文件的依赖性,我无法使用绝对路径部署它。

提前致谢

1 个答案:

答案 0 :(得分:2)

虽然这个问题已经有几年了,但这是一个很好的问题。

要使用scala.sys.process从特定工作目录执行某些操作,请将所需目录作为参数传递给ProcessBuilder,如下例所示:

import scala.sys.process._
val scriptPath = "/home/path/myShellScript.sh"
val command = Seq("/bin/bash","-c",scriptPath)
val proc = Process(command,new java.io.File("."))
var output = Vector.empty[String]
val exitValue = proc ! ProcessLogger (
(out) => if( out.trim.length > 0 )
  output +:= out.trim,
(err) =>
  System.err.printf("e:%s\n",err) // can be quite noisy!
)
printf("exit value: %d\n",exitValue)
printf("output[%s]\n",output.mkString("\n"))

如果目标是确保调用者的环境默认为特定的工作目录,那么可以通过在启动jvm之前设置所需的工作目录来实现。