Я пытаюсь выполнить команду из моего веб-приложения Java (проект maven с Tomcat 8 в Eclipse). Если я выполняю эту команду с помощью строки cmd или файла .jar, проблем нет, но в Eclipse это не работает. Я пробовал ProcessBuilder
класс и Runtime.getRuntime().exec()
, но оба они выбрали исключение из «исключенного файла».не может запускать команду с processbuilder или runexec внутри eclipse
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);
}
Спасибо, Джулио
попробовать абсолютный путь к .exe команде; то вы также можете установить 'builder.directory (workDir);' – boly38