【发布时间】:2012-04-08 18:43:58
【问题描述】:
我想使用 java 代码在 windows 环境中调用 shell 脚本。 我正在尝试执行下面的代码来运行我的测试脚本(不是实际脚本):
Java 代码:
public static void main (String args[]) {
Runtime r = Runtime.getRuntime();
try {
Process p = r.exec("C:\\cygwin\\bin\\bash -c '/cygdrive/d/scripts/test.sh'");
InputStream in = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
System.out.println("OUT:");
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
in = p.getErrorStream();
br = new BufferedReader(new InputStreamReader(in));
System.out.println("ERR:");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
p.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
test.sh
#!/bin/bash
rm -rf ./test
但我收到这些错误,并且脚本无法删除目录。
错误: /cygdrive/d/ereader/scripts/test.sh:第 2 行:$'\r':找不到命令 /cygdrive/d/ereader/scripts/test.sh:第 3 行:rm:找不到命令
另一件事,当我从 cygwin 终端运行脚本时,它工作正常。我检查了路径变量,它们都很好。但是我尝试通过java代码执行相同的脚本,它给出了错误..
现在如何告诉java程序在哪里引用rm命令?
【问题讨论】:
标签: java linux jakarta-ee cygwin