Не удается выполнить команды prompt из программы Java

#java #windows #command-prompt

#java #Windows #командная строка

Вопрос:

Я пытаюсь запустить простую команду prompt из Java-приложения.

Что бы я ни пытался, я всегда получаю CreateProcess error=2 .

Это мой код:

 File f = new File("C:/Users/my/path/to/the/executable/");
String[] commands = { "text.txt", "--command1" /* others commands */ };
// omitting try/catch
Process p = Runtime.getRuntime().exec("myprogram.exe", commands, f);
p.waitFor();
// other code
  

EXE-файл принимает в качестве первого параметра файл .txt, затем он принимает обычные команды как —command1.

Как я могу заставить это работать? Заранее спасибо!

Комментарии:

1. Какая у вас ошибка?

2. @talex, более конкретно это: Java.io.IOException: Не удается запустить программу «myprogram.exe «(в каталоге «/thedirectory»): ошибка = 2, такого файла или каталога нет

Ответ №1:

Параметр directory — это не путь к исполняемому файлу, это рабочий каталог, поэтому, если вы находитесь в командной строке, это будет текущий каталог, в котором вы находитесь при запуске команды.

Вам нужно указать весь путь в первом параметре или добавить его в переменную среды PATH

Комментарии:

1. Спасибо! Ошибка устранена, но возникла новая проблема. та же команда выдает результат, если я запускаю ее вручную в cmd, но ничего не возвращает, если запущена с java. Что бы это могло быть?

2. Вам нужен объект BufferReader для чтения выходных данных из cmd …. что-то вроде: BufferedReader bf = new BufferedReader(new InputStreamReader(p.getInputStream())); Поскольку вы не показываете свой «другой код», нет способа узнать, есть ли у вас это.