#java #apache #command-line #command #command-line-arguments
#java #apache #командная строка #команда #аргументы командной строки
Вопрос:
Я выполняю команду, используя Java-код. но как только команда начнет запуск, она запросит некоторый пользовательский ввод. Я не знаю, как обеспечить ввод с помощью Java-кода. Пожалуйста, помогите мне.
Я использую пакет apache org.apache.commons.exec.CommandLine для запуска команды.
Вывод после выполнения команды с использованием кода Java :
[java] The ear file could archive up to: 17 MB in size.
[java] Are you sure you want to build it? [y]Ear building was cancelled by the user
Код Java :
try {
CommandLine cmdLine = new CommandLine(command);
for (int i = 0; i < args.size(); i ) {
cmdLine.addArgument(args.get(i));
}
DefaultExecutor exec = new DefaultExecutor();
exec.setWorkingDirectory(new File(dir));
if (timeout > 0) {
ExecuteWatchdog watchdog = new ExecuteWatchdog(timeout);
exec.setWatchdog(watchdog);
}
exitValue = exec.execute(cmdLine);
return exitValue;
} catch (Exception e) {
log.error(e, e);
}
Ответ №1:
Лучше использовать Runtime.exec(..), который возвращает вам объект процесса.
Процесс имеет метод getOutputStream(), который подключен к обычному вводу подпроцесса. Немного сложнее использовать и определять, когда ваш скрипт завершен, но дает вам больше свободы.
Ответ №2:
Используйте system.in в Java для приема входных значений
Комментарии:
1. но как я могу ввести данные после «Вы уверены, что хотите его создать? [y]» это из кода.
2. syso (вы уверены? [y] [n]) используйте bufferreader. ниже приведена ссылка, которая будет полезна mkyong.com/java/how-to-read-input-from-console-java