我试图通过 ProcessBuilder
捕获 sbt
启动的主类的输出,但这不起作用。我在这里错过了什么?
结果是打印在控制台而不是println
val result = Seq("sbt", "runMain example.Hello")
.#<(new ByteArrayInputStream("a".getBytes()))
.!!
println(s"result=$result")
最佳答案
我们在尝试使用直线时遇到了类似的情况。
这对我们有用:
val stdout = new StringBuilder
val stderr = new StringBuilder
var commandSeq = Seq("beeline"
, "-u"
, ConfigProvider.config.BeelineConfig.Url
, "-n"
, ConfigProvider.config.BeelineConfig.UserName
, "-p"
, ConfigProvider.config.BeelineConfig.Password
, "--outputformat=xmlattr"
, "-f"
, filePath)
hiveConfArgs.foreach(arg => {
commandSeq = commandSeq :+ "--hivevar"
commandSeq = commandSeq :+ arg
})
commandSeq ! ProcessLogger(stdout append _, stderr append _ + "\n")
(stdout.toString, stderr.toString)
关于scala - 如何在 Scala 中捕获进程的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338343/