Java 从bash运行Scrapy(shell脚本)

Java 从bash运行Scrapy(shell脚本),java,bash,shell,scrapy,Java,Bash,Shell,Scrapy,我用Java开发了一个web应用程序,它使用Scrapy获取一些数据。为此,我从Java调用了一个shell脚本: Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh"); p.waitFor(); 其中包含 #!/bin/bash cd mySpiderPath echo "We are going tu run scrapy" scrapy crawl mySpider echo "done!" 运行它

我用Java开发了一个web应用程序,它使用Scrapy获取一些数据。为此,我从Java调用了一个shell脚本:

 Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh");
 p.waitFor();
其中包含

 #!/bin/bash

 cd mySpiderPath
 echo "We are going tu run scrapy"
 scrapy crawl mySpider
 echo "done!"
运行它之后,两个“echo”都被打印出来,但scrapy什么也不做。如果我从shell运行myScript.sh,它会工作得很好。。。我糊涂了

我能做些什么来调试这种奇怪的行为

编辑

我已经将myScript.sh改为运行python版本而不是scrapy命令,但它不起作用。。。所以,结论是,这不是一个“棘手的问题”,但当从Java调用它时,它是一个bash脚本问题……有什么想法吗?(如果我从shell执行myScript.sh,它可以正常工作)

尝试更改:

Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh");
致:


这可能会使用
/bin/bash
而不是
/bin/sh
运行脚本,后者通常指向一个更简单的shell。

您确定在流程中定义了scrapy命令吗?可以将完整路径放入二进制文件,或者确保path变量包含该二进制文件的路径。您可能可以回显$PATH,我不知道scrapy,但您可以尝试执行其他操作,如scrapy-version或scrapy-Help吗我已将scrapy crawl mySpider更改为
scrapy-version
,但仍然无法工作。。。就像它不识别
scrapy
命令一样,但会提示任何错误。如果我从shell中执行
scrapy version
,效果会很好。我已经按照您的建议编辑了我的问题@MikeI将在脚本中添加echo$PATH,以查看PATH变量的外观。如果路径中没有scrapy目录(在python中执行?),则需要导出PATH变量以包含scrapy/python目录我尝试了您的建议,但没有成功。。。无论如何,谢谢你。我会试试@Mike的
Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh");
Process p = Runtime.getRuntime().exec("bash myPath/myScript.sh");