Как дать ответ в командной строке с помощью Java

#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