Java библиотека

@javalib
Фото Запускаем внешнюю команду через ProcessBuilder! Иногда Java-приложению нужно вызвать системную утилиту, например git, ffmpeg или собственный скрипт деплоя. Склеивать такую команду в одну строку опасно, особенно если параметры приходят извне. ProcessBuilder принимает аргументы отдельно. Так пробелы и специальные символы не превращаются в случайный shell-код. var process = new ProcessBuilder( "git", "status", "--short") .redirectErrorStream(true) .start(); redirectErrorStream(true) объединяет обычный вывод и ошибки. Это не даёт процессу зависнуть, когда буфер stderr заполняется, пока приложение читает только stdout. try (var reader = process.inputReader()) { var lines = reader.lines().toList(); lines.forEach(System.out::println); } После чтения обязательно дождитесь завершения и проверьте код возврата. Нулевой код обычно означает успех. int exitCode = process.waitFor(); if (exitCode != 0) { throw new IllegalStateException("Command failed"); } Для долгих команд добавьте waitFor с таймаутом и уничтожайте процесс при превышении лимита. Так интеграция с внешним инструментом не сможет навсегда заблокировать поток приложения. Java Библиотека | Мы в Телеграм
Если у вас установлено приложение,
вы можете сразу перейти в канал