未从 OSX 脚本 运行 中找到 wget 来自 Java
wget not found from OSX script run from Java
我写了一个 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_test 脚本执行此操作:
wget -O/dev/null --load-cookies cookies-.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 程序调用的脚本?
如 Elliott Frisch 所述,并根据我自己通过应用程序在多个 OS 上使用 运行 脚本的经验:
通过java代码执行脚本时,您必须确保可以找到您尝试执行的命令。这通常需要使用两个选项之一:
- 使用全局环境路径变量 - 当以编程方式 运行 脚本时,您的代码会打开一个 shell 实例并执行您的脚本。新的 shell 实例没有预先配置的全局环境路径变量,这意味着您应该将此配置添加到脚本的开头:
export PATH=${PATH}:/path/to/your/used/bin
- 使用命令的绝对路径 - 只需在脚本中使用完整路径显式调用命令即可:
/usr/local/bin/wget ........
作为旁注 - OP 中的错误消息指出无法找到 wget
命令。尝试通过 chmod
提供完整的 read/write/execute 权限实际上没有任何效果,因为权限无助于提供命令路径。
参考文献:
我写了一个 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_test 脚本执行此操作:
wget -O/dev/null --load-cookies cookies-.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 程序调用的脚本?
如 Elliott Frisch 所述,并根据我自己通过应用程序在多个 OS 上使用 运行 脚本的经验:
通过java代码执行脚本时,您必须确保可以找到您尝试执行的命令。这通常需要使用两个选项之一:
- 使用全局环境路径变量 - 当以编程方式 运行 脚本时,您的代码会打开一个 shell 实例并执行您的脚本。新的 shell 实例没有预先配置的全局环境路径变量,这意味着您应该将此配置添加到脚本的开头:
export PATH=${PATH}:/path/to/your/used/bin
- 使用命令的绝对路径 - 只需在脚本中使用完整路径显式调用命令即可:
/usr/local/bin/wget ........
作为旁注 - OP 中的错误消息指出无法找到 wget
命令。尝试通过 chmod
提供完整的 read/write/execute 权限实际上没有任何效果,因为权限无助于提供命令路径。
参考文献: