BufferredWriter.write() 在 Intellij 中处理工作,但不在 jar

我正在尝试运行程序 trezorctl 以签署 QtumTrezor 设备一起内置的 Java 交易,方法是通过 ProcessBuilder 创建一个进程,该进程运行命令 trezorctl sign-tx <name_of_file>.json。运行后,您通常需要在确认交易之前输入您的 PIN 码。

我通过调用 BufferedWriter(OutputStreamWriter(proc.getOutputStream()))write(pin)newLine() 使用 flush() 向进程输入 PIN。当通过 Intellij 运行程序时,这适用于 Linux 和 Mac,但是当我构建 jar 文件并运行它时,它不会。 trezorctl 没有收到输入,我的程序在下一个 stdInput.next() 挂起。在 Windows 上,Intellij 上也会出现这种情况。

为什么它可以在一种情况下工作而不是在另一种情况下,即使在同一个操作系统中?当我在 Windows 上手动运行命令行应用程序时,它适用于 cmd,但不适用于 Git bash,表现出类似的行为。我不知道这是否重要,但 trezorctl 屏蔽了输入,因此您看不到 PIN,这会影响吗?我也试过用 sudo 运行我的程序,所以我认为这不是权限问题。

sienchou 回答:BufferredWriter.write() 在 Intellij 中处理工作,但不在 jar

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/27699.html

大家都在问