当我从终端手动 运行 java 程序时它工作正常但是当我从 eclipse 运行 时它不工作
When I am running java program manually from terminal it is working fine but it is not working when i am running from eclipse
我的程序不是 运行 来自 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:找不到命令
错误消息来自您的脚本。不是来自 Eclipse。
Eclipse(或更准确地说是 JVM)不知道脚本的环境变量或工作目录。相反:如果您 运行 来自命令行环境变量(例如 PATH)或工作目录的脚本是已知的。
您可以使用方法 Runtime.exec(String command, String[] envp, File dir)
在您的 Java 代码中指定它。所以我想这应该可行:
Process p =
Runtime.getRuntime().exec("/home/avinash/sqoop.sh", null, new File("/home/avinash/"));
尝试使用命令 "sh /home/avinash/sqoop.sh"。我觉得因为 ubuntu 不知道它是什么类型的文件,它显然是在抛出 command not found 错误。
我的程序不是 运行 来自 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:找不到命令
错误消息来自您的脚本。不是来自 Eclipse。
Eclipse(或更准确地说是 JVM)不知道脚本的环境变量或工作目录。相反:如果您 运行 来自命令行环境变量(例如 PATH)或工作目录的脚本是已知的。
您可以使用方法 Runtime.exec(String command, String[] envp, File dir)
在您的 Java 代码中指定它。所以我想这应该可行:
Process p =
Runtime.getRuntime().exec("/home/avinash/sqoop.sh", null, new File("/home/avinash/"));
尝试使用命令 "sh /home/avinash/sqoop.sh"。我觉得因为 ubuntu 不知道它是什么类型的文件,它显然是在抛出 command not found 错误。