我的程序不是从eclipse运行的,而是通过ubuntu的终端运行的。
下面是我用java运行的shell脚本
# !/usr/bin/env bash
# Running sqoop commands
s="$(sqoop help)"
echo "$s"
下面是java代码
package flexibility;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Flex {
public static void main(String args[]) throws Exception {
String s = null;
String line = "";
String sqoopCommand = "sqoop help";
try {
Process p = Runtime.getRuntime().exec("/home/avinash/sqoop.sh");
p.waitFor();
StringBuffer output = new StringBuffer();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = stdInput.readLine()) != null) {
output.append(line + "\n");
}
while ((line = stdError.readLine()) != null) {
output.append(line + "\n");
}
System.out.println("### " + output);
} catch (Throwable t) {
t.printStackTrace();
}
}
}
错误消息:
/home/avinash/sqoop.sh:第5行:sqoop:未找到命令
2条答案
按热度按时间oxalkeyp1#
尝试使用命令“sh/home/avinash/sqoop.sh”。我觉得既然ubuntu不知道它是什么类型的文件,它显然抛出了commandnotfound错误。
v7pvogib2#
错误消息来自您的脚本。不是日 eclipse 。
eclipse(或者更准确地说是jvm)不知道脚本的环境变量或工作目录。相反:如果从命令行运行脚本,则环境变量(例如路径)或工作目录是已知的。
你可以用这个方法
Runtime.exec(String command, String[] envp, File dir)
在java代码中指定。所以我想这应该管用: