以下命令在命令行中运行良好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();
添加回答
举报
0/150
提交
取消