从从Java运行的OSX脚本中找不到wget

从从Java运行的OSX脚本中找不到wget,java,sh,wget,Java,Sh,Wget,我编写了一个Java程序,在Mac上运行脚本: Runtime rt = Runtime.getRuntime(); String cmdString = "./load_test.sh"; System.out.println(cmdString); Process pr = rt.exec(cmdString); BufferedReader input = new BufferedReader(new InputStreamReader

我编写了一个Java程序,在Mac上运行脚本:

     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_测试脚本执行以下操作:

wget -O/dev/null --load-cookies cookies-$1.txt 'http://demo.mycompany.co.uk/userhome'
尽管我在Mac上从许多不同的位置运行了load_test.sh,但该Java程序的输出是:

./pcm\u load\u test.sh:未找到第2行:wget:命令

所以,当从Java派生时,wget似乎不能从脚本调用

我认为这可能是用户访问问题,因此我尝试:

 sudo chmod a+rwx /usr/local/bin/wget
但这没有效果

您知道为什么
wget
不会从Java程序调用的脚本运行吗?

如所述,并根据我自己通过应用程序在多个操作系统上运行脚本的经验:

当通过java代码执行脚本时,必须确保可以找到要执行的命令。这通常需要使用以下两个选项之一:

  • 使用全局环境路径变量-以编程方式运行脚本时,代码将打开一个shell实例并执行脚本。新的shell实例没有预配置的全局环境路径变量,这意味着您应该将此配置添加到脚本的开头:
    export PATH=${PATH}:/PATH/to/your/used/bin
  • 使用命令的绝对路径-只需使用脚本中的完整路径显式调用命令:
    /usr/local/bin/wget……。
作为旁注-OP中的错误消息表示找不到
wget
命令。尝试通过
chmod
提供完整的读/写/执行权限实际上没有任何效果,因为这些权限无助于提供命令的路径

参考资料: