ProcessBuilder и System.console () в Linux - PullRequest
0 голосов
/ 16 ноября 2018

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

Как многие люди на SO уже заявили во многих постах, похоже, это не работает; System.console () генерирует исключение NullPointerException. То же самое происходит при попытке запуска модульных тестов из IDE. По сути, вам нужно запустить приложение Java из интерактивной оболочки , которой у вас нет при запуске из .sh внутри ProcessBuilder. Я пробовал ProcessBuilder.redirectInput (), ProcessBuilder.inheritIO (), ничего не работает.

Кажется, что в Windows есть что-то вроде обходного пути ; Вы можете вызвать start и затем cmd.exe, а затем приложение Java. При этом вы используете интерактивную оболочку , поэтому System.console () больше не равен нулю.

Есть ли способ сделать это в Linux?

Спасибо!

...