从java调用时,shell脚本中的Scrapy命令不执行

时间:2015-05-26 16:30:41

标签: java bash shell scrapy scrapy-spider

我有以下shell脚本调用scrapy

renny$ echo $PATH
/usr/local/bin/scrapy:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

在调用此脚本文件的java程序中,错误流表示找不到scrapy:command

我在bash_profile文件中添加了scrapy路径,在执行PATH时我得到了结果

String command = "/Users/renny/Documents/WorkSpaces/Scrapy/tutorial/tutorial/crawls.sh";        

String[] cmd = new String[]{"/bin/sh", command,key,formattedDate};
//Process p = Runtime.getRuntime().exec(cmd);

ProcessBuilder p = new ProcessBuilder(cmd);
Process p2 = p.start();

int code = p2.waitFor();

我正在使用以下代码运行脚本文件

StartServiceCtrlDispatcher()

如果我直接执行shell脚本,它可以正常工作。

2 个答案:

答案 0 :(得分:2)

你的'PATH'声明中缺少正斜杠,路径应该是目录,而不是程序

你有

export PATH=usr/local/bin/scrapy:$PATH

应该是

export PATH=/usr/local/bin:$PATH

答案 1 :(得分:0)

我包括

cd /Users/renny/Documents/WorkSpaces/Scrapy/tutorial
export PATH=usr/local/bin/scrapy:$PATH
export PATH=/usr/local/bin:$PATH 

现在似乎工作不确定为什么但是从java运行脚本时我需要将这些添加到文件的路径中但是在直接运行脚本文件时它不需要将这些PATH写入文件中

scrapy似乎也需要在项目目录中,所以将cd添加到项目路径