Scala:执行sh文件时出现IOException

qij5mzcb  于 2022-12-13  发布在  Scala
关注(0)|答案(1)|浏览(156)

我正在尝试从资源执行sh文件。
执行文件位于资源的根目录下:资源库/主/资源/hiveCommand.sh

import sys.process._
"./hiveCommand.sh" !!

但收到IOException:不是这样的文件或目录
我做错了什么?

q9yhzks0

q9yhzks01#

Scala的Process integration不知道如何处理shell脚本。它只能启动程序。要运行shell脚本,您需要启动一个shell(例如bash),并将要运行的文件作为参数提供给它。
但是有一个复杂的问题,因为脚本是一个资源(在编译时位于src/main/resources/hiveCommand.sh),在运行时它位于一个jar中。
所以简而言之:

  • 首先提取shell脚本(使用getClass.getResourceAsStream("/hiveCommand.sh")读取资源)并将其存储在磁盘上。
  • 然后从以下内容开始:
"bash /tmp/hiveCommand.sh".!!

相关问题