Как запустить команду Windows из Java - PullRequest
0 голосов
/ 06 декабря 2011

Я хотел бы выполнить следующую команду с Java:

"C: \ Program Files \ MySQL \ MySQL Server 5.5 \ bin \" mysqldump -u root --password = xxxx --routinesбаза данных> C: \ Users \ john \ Desktop \ backup.sql

Команда отлично работает, когда я использую Windows cmd.exe, но не с моим Java-приложением.

cmd = "\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\\"mysqldump
-u root --password=xxxx --routines database > C:\\Users\\john\\Desktop\\backup.sql
Runtime runtime = Runtime.getRuntime(); 
process = runtime.exec(cmd);

Я получил следующую ошибку:

"C: \ Program Files \ MySQL \ MySQL Server 5.5 \ bin \" mysqldump -u root --password = xxxx - подпрограмма базы данных> C: \ Users\ john \ Desktop \ backup.sql java.io.IOException: не удается запустить программу "" C: \ Program ": ошибка CreateProcess = 5, доступ запрещен

У вас есть идеи?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вы пытаетесь использовать перенаправление (>), которое является функцией оболочки.

У вас нет оболочки, вы exec непосредственно используете процесс mysqldump.

Вам либо нужно прочитать поток вывода из объекта process изапишите его в файл самостоятельно или exec оболочку Windows для выполнения mysqldump для вас вместе с перенаправлением.

1 голос
/ 06 декабря 2011

Ошибка 5: 1) не может получить доступ к файлу / папке или 2) не имеет разрешений.

Похоже, что пробел в имени каталога «Программный файл» может вызывать проблемы, вызывая проблемы.Проверьте, где написано «Невозможно запустить программу» «C: \ Program».Это явно не ссылка на команду, которую вы пытаетесь выполнить.Я хотел бы добавить MySQL к вашему пути, а затем просто вызвать команду mysqldump без указания пути к нему.Если вы не хотите этого делать, вы можете определить системную переменную и сослаться на нее с помощью% MYSQL_HOME% \ mysqldump.

Как только вы определите путь, если он все еще не работает, выхочу посмотреть на разрешения для команды.Вам нужно убедиться, что у процесса есть разрешение на выполнение команды.Я думаю, что это в местных группах администраторов или что-то в этом роде.

Долларов, чтобы пончики ваш путь.

...