我必须转到应用程序的路径来部署它,我尝试使用scala.sys.process
并执行"cd /home/path/somepath" !
它抛出异常,任何人都可以指导我如何进入目录,由于运行文件的依赖性,我无法使用绝对路径部署它。
提前致谢
答案 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之前设置所需的工作目录来实现。