psql:在Eclipse中运行bash脚本时找不到命令

时间:2018-11-12 19:12:56

标签: java eclipse bash postgresql maven

我正在编写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命令来运行该方法。所有作品。

唯一不起作用的是它是在eclipse中执行的。

我欢迎任何意见或建议,如果您需要更多信息,请告诉我。

感谢所有的帮助!

1 个答案:

答案 0 :(得分:0)

我怀疑用于执行脚本的Runtime的路径设置不正确。尝试对脚本中的命令使用完整路径,然后查看是否可行(您可以通过在终端中运行which createdbwhich psql找到完整路径)。