Java, как запустить CMD и оставаться подключенным к нему для взаимодействия с пользователем? - PullRequest
0 голосов
/ 14 декабря 2018

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

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

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

1 Ответ

0 голосов
/ 14 декабря 2018

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

Когда .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 и останется прикрепленным к нему.

...