我正在尝试从我的 Java Web 应用程序(Eclipse 中使用 Tomcat 8 的 Maven 项目)执行命令。如果我通过 cmd 行或 .jar 文件执行此命令,则没有问题,但在 Eclipse 中它不起作用。我尝试了ProcessBuilder
类,Runtime.getRuntime().exec()
但都抛出了相同的“找不到文件异常”异常。
java.io.IOException: Cannot run program "mongodump": error=2, No such file or directory
我要运行的命令是:
mongodump --db TweetsDB --collection Tweets --out ./TweetsDB_backup/
运行时环境似乎找不到 mongodump 命令(和/或命令中命名的文件夹?)有什么建议吗?这是我的代码:
public synchronized static void backup(){
Process p;
try {
String dateTimeInString = dateTimeToString(Calendar.getInstance());
System.out.println("backuppando "+dateTimeInString);
p = Runtime.getRuntime().exec("mongodump --db TweetsDB --collection Tweets --out ./backup/"); //override always the same db to save space
p.waitFor();
System.out.println("Backup effettuato correttamente :)");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是“流程构建器”变体:
ProcessBuilder builder = new ProcessBuilder("mongodump", "--db", "TweetsDB","--collection", "Tweets", "--out" ,"./TweetsDB_backup/");
builder.redirectErrorStream(true); // equivalent of 2>&1
final Process process = builder.start();
InputStream es = process.getErrorStream();
InputStreamReader esr = new InputStreamReader(es);
BufferedReader br = new BufferedReader(esr);
String line;
while((line = br.readLine())!= null){
System.out.println(line);
}
谢谢,朱利奥