Java, как запустить CMD и оставаться подключенным к нему для взаимодействия с пользователем?

Я борюсь со следующей проблемой: я пытаюсь создать приложение, которое при запуске открывает окно CMD (видимое для пользователя) и которое присоединяется к входу и выходу этого окна (так, чтобы оно функционировало как консоль приложение). Поэтому, если пользователь что-то печатает в окне CMD, то, например, сканер (System.in) может его забрать, а когда я делаю System.out.println, это появляется в окне CMD.

Я знаю, что можно просто запустить файл.jar из CMD и прикрепить его таким образом, но это не то, что я хочу. Я хочу.jar открыть окно CMD на себя и использовать его в качестве консоли (видимый для пользователя).

Ждем некоторых предложений:)

1 ответ

Решение

Благодаря предложению Пуля я пришел к следующему решению:

Когда.jar запускается без аргументов, он автоматически ищет файл.bat "launcher.bat" в той же папке и запускает этот файл через процесс CMD:

    if(args.length > 0 && args[0].equals("ATTACH") {
        // Execute command-line program....
    } else {
        ArrayList<String> commands = new ArrayList<>();
        commands.add("cmd.exe");
        commands.add("/c");
        commands.add("start");
        commands.add("cd " + new File("").getAbsolutePath()); // cd to classpath
        commands.add("launcher.bat"); // The launcher that is in classpath

        ProcessBuilder pb = new ProcessBuilder(commands);

        Process p = pb.start();
    }

Файл.bat содержит следующую инструкцию:

java -jar LineCounter.jar ATTACH

В результате окно cmd, которое было открыто с помощью сборщика процессов, в свою очередь снова откроет файл bat, который откроет файл.jar и останется прикрепленным к нему.

Другие вопросы по тегам