scala - 如何在 Scala 中捕获进程的输出
问题描述
我正在尝试sbt
通过 a捕获主类启动的输出,ProcessBuilder
但这不起作用。我在这里想念什么?
结果在控制台中打印,而不是由 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)
推荐阅读
- android - TelephonyManager 在 android 12 上弃用了 listen() CALL_STATE_RINGING
- highcharts - Highcharts - 选择事件修改选项
- c - POSIX 中的 fopen 与 open(在 C 中)
- python - 如何在使用 Beautifulsoup 抓取数据时使用 python 列表中的索引范围从 html 中查找特定数据?
- javascript - 是否可以下载我从服务器获取的数据块?
- python - 如何逐行应用 numpy.where() 或 fillna() 以从新填充的行中返回元素
- php - 从字符串中提取 FQDN/ IPv4/ IPv6
- r - 在r中的循环内更改“字符向量”的名称
- custom-fields - WP 管理器自定义字段
- math - 将 log10-Data 转换为 1-11 比例