我正在尝试通过sbt
捕获ProcessBuilder
启动的主类的输出,但这不起作用。我在这里想念什么?
结果在控制台中打印,但不是通过println打印
val result = Seq("sbt", "runMain example.Hello")
.#<(new ByteArrayInputStream("a".getBytes()))
.!!
println(s"result=$result")
最佳答案
尝试使用beeline时,我们遇到了类似的情况。
这为我们工作:
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)