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, поэтому я не думаю, что это проблема с разрешением.

0 ответов

Другие вопросы по тегам