Мне нужно выполнить пакетный файл, который запускает другое Java-приложение. Мне все равно, выполняется ли оно успешно или нет, и мне не нужно фиксировать какие-либо ошибки.
Возможно ли это с помощью ProcessBuilder? Каковы последствия, если я не фиксирую ошибки?
Однако мое требование - просто выполнить другое Java-приложение.
Переведено автоматически
Ответ 1
Runtime.getRuntime().exec() Подход довольно хлопотный, как вы скоро узнаете.
Взгляните на проект Apache Commons Exec. Он позволяет абстрагироваться от множества распространенных проблем, связанных с использованием Runtime.getRuntime().exec() и ProcessBuilder API.
Вот пример использования ProcessBuilder для выполнения вашего удаленного приложения. Поскольку вас не волнуют ввод / вывод и / или ошибки, вы можете поступить следующим образом:
List<String> args = newArrayList<String>(); args.add ("script.bat"); // command name args.add ("-option"); // optional args added as separate list items ProcessBuilderpb=newProcessBuilder (args); Processp= pb.start(); p.waitFor();
метод waitFor() дождется завершения процесса, прежде чем продолжить. Этот метод возвращает код ошибки процесса, но, поскольку вам это безразлично, я не включил его в пример.
Ответ 4
Вы можете выполнить пакетную инструкцию или любое другое приложение, используя
Runtime.getRuntime().exec(cmd);
cmd - это команда или путь к приложению.
Также вы можете дождаться выполнения и получения кода возврата (чтобы проверить, правильно ли он выполнен) с помощью этого кода: