我编写了一个在我的Mac上运行脚本的Java程序:
Runtime rt = Runtime.getRuntime();
String cmdString = "./load_test.sh";
System.out.println(cmdString);
Process pr = rt.exec(cmdString);
BufferedReader input = new BufferedReader(new InputStreamReader(
pr.getErrorStream()));
String line = null;
while ((line = input.readLine()) != null)
{
System.out.println(line);
}
int exitVal = pr.waitFor();
load_test脚本执行此操作:
wget -O/dev/null --load-cookies cookies-$1.txt 'http://demo.mycompany.co.uk/userhome'
即使我在Mac上从许多不同的位置运行load_test.sh,这个Java程序的输出是:
./ pcm_load_test.sh:line 2:wget:command not found
因此,似乎从Java中生成时,无法从脚本调用wget?
我认为这可能是用户访问问题,所以我尝试了:
sudo chmod a+rwx /usr/local/bin/wget
但这没有效果。
为什么wget
不会从Java程序调用的脚本运行的任何想法?
答案 0 :(得分:1)
正如Elliott Frisch所述,并基于我自己通过应用程序在多个操作系统上运行脚本的经验:
通过java代码执行脚本时,必须确保可以找到您尝试执行的命令。这通常需要使用以下两个选项之一:
export PATH=${PATH}:/path/to/your/used/bin
/usr/local/bin/wget ........
作为旁注 - OP中的错误消息指出无法找到wget
命令。实际上,通过chmod
提供完整的读/写/执行权限的尝试将无效,因为权限无助于提供命令的路径。
参考文献: