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