为了账号安全,请及时绑定邮箱和手机立即绑定

通过 ProcessBuilder Java 找不到 shp2pgsql、psql 命令

通过 ProcessBuilder Java 找不到 shp2pgsql、psql 命令

MM们 2021-09-15 15:34:19
以下命令在命令行中运行良好shp2pgsql -s 4326 /Users/abc.shp | psql -U user1 -h localhost -p 5432 -d postgis但是,当我使用 ProcessBuilder 在 Java 中运行以下命令时,它说找不到命令。这是代码: public static void main(String arg[]) throws Exception {    ProcessBuilder pb =                   new ProcessBuilder("/bin/sh -c shp2pgsql /Users/abc.shp | psql -U user1 -h localhost -p 5432 -d postgis");    Process p = pb.start();    showOutput(p.getInputStream(), System.out);    showOutput(p.getErrorStream(), System.err);}private static void showOutput(final InputStream src, final PrintStream dest) {    new Thread(new Runnable() {        public void run() {            Scanner sc = new Scanner(src);            while (sc.hasNextLine()) {                dest.println(sc.nextLine());            }        }    }).start(); }
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

似乎Java不明白您的环境路径(psql或shp2pgsql ..)在哪里


您需要指定路径才能执行。它通常在/usr/local/bin或 中usr/bin。另外,还要注意的参数"/bin/sh和"-c"(这您指定要执行的命令字符串格式)是分开的。只需修改以下代码段即可。它应该工作!


String env = "/usr/local/bin/";

ProcessBuilder pb =

                   new ProcessBuilder("/bin/sh", "-c", env +"shp2pgsql /Users/abc.shp | "+env+"psql -U user1 -h localhost -p 5432 -d postgis");

    Process p = pb.start();


查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信