我正在编写Java方法来使用Eclipse运行本地bash脚本。代码如下所示:
public static void setUp() throws IOException, InterruptedException {
Runtime rt = Runtime.getRuntime();
Process p;
String filePath = new File("").getAbsolutePath();
filePath = filePath.concat("/path/to/the/script");
String command = String.format("sh %s/setUp.sh", filePath);
System.out.println(command);
try {
p = rt.exec(command);
final int errorValue = p.waitFor();
if (errorValue != 0) {
System.out.println("error detected!");
InputStream error = p.getErrorStream();
BufferedReader br = new BufferedReader(new InputStreamReader(error));
String line = "";
while ((line = br.readLine()) != null) {
System.out.println(line);
}
p.destroy();
}
} catch (Exception e) {
e.printStackTrace();
}
}
bash文件非常简单:
#!/bin/bash
#create a local db and import some data
createdb -U dummy -O dummy -h localhost dbname
psql -h localhost -d dbname --file $1
line 4: createdb: command not found
line 5: psql: command not found
我可以在终端中运行脚本,并且可以在终端中复制line4和line5,并且可以在终端中运行mvn exec命令来运行该方法。所有作品。
我欢迎任何意见或建议,如果您需要更多信息,请告诉我。
感谢所有的帮助!
答案 0 :(得分:0)
我怀疑用于执行脚本的Runtime
的路径设置不正确。尝试对脚本中的命令使用完整路径,然后查看是否可行(您可以通过在终端中运行which createdb
和which psql
找到完整路径)。