BufferredWriter.write() для обработки работает в Intellij, но не в jar
Я пытаюсь запустить программу чтобы подписать транзакцию Qtum,trezorctl,созданную на Java вместе с устройством Trezor , путем создания процесса через
ProcessBuilder
который запускает команду
trezorctl sign-tx <name_of_file>.json
. После его запуска вам часто потребуется ввести свой PIN-код, прежде чем подтверждать транзакцию.
Я ввожу ПИН-код в процесс, используя
BufferedWriter(OutputStreamWriter(proc.getOutputStream()))
позвонив
write(pin)
, потом
newLine()
, потом
flush()
. Это работает в Linux и Mac при запуске программы через Intellij, но когда я создаю файл jar и запускаю его, этого не происходит. не получает ввод, и моя программа зависает в следующий
stdInput.next()
. В Windows такое поведение наблюдается и в Intellij.
Почему он будет работать в одном случае, а не в другом, даже в одной и той же ОС? Когда я вручную запускаю приложение командной строки в Windows, оно работает с cmd, но не с Git bash, демонстрируя аналогичное поведение. Я не знаю, имеет ли это значение, но
trezorctl
маскирует ввод так, чтобы вы не видели PIN-код, это повлияет на это? Я также пробовал запускать свою программу с
sudo
, поэтому я не думаю, что это проблема с разрешением.