代码之家  ›  专栏  ›  技术社区  ›  Black

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

  •  1
  • Black  · 技术社区  · 6 年前

    我编写了一个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(); 
    

    加载测试脚本执行以下操作:

    wget -O/dev/null --load-cookies cookies-$1.txt 'http://demo.mycompany.co.uk/userhome'
    

    虽然我已经在很多不同的地方运行了我的Mac上的LooxTest.SH,但是这个Java程序的输出是:

    ./pcm_load_test.sh:行2:wget:未找到命令

    那么,当从Java生成时,WGET不能从脚本调用吗?

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

     sudo chmod a+rwx /usr/local/bin/wget
    

    但这没有效果。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rann Lifshitz rul    6 年前

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

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

    • 使用全局环境路径变量-以编程方式运行脚本时,代码将打开shell实例并执行脚本。新的shell实例没有预配置的全局环境路径变量,这意味着您应该将此配置添加到脚本的开头: export PATH=${PATH}:/path/to/your/used/bin
    • 使用命令的绝对路径-只需在脚本中使用命令的完整路径显式调用命令: /usr/local/bin/wget ........

    作为补充说明-OP中的错误消息指出 wget 找不到命令。试图通过 chmod 实际上,将没有任何效果,因为权限无助于提供命令的路径。

    参考文献: