【问题标题】:Java Program not taking the Piped inputJava 程序不接受管道输入
【发布时间】:2018-04-06 12:22:40
【问题描述】:

我必须使用一个需要 2 个用户输入的 Java 程序,如下所示:

Enter username:
Enter password:

所以我想像这样发送它

echo -e "myusername\npassword" | java javaprogram 

java javaprogram < input.txt

两者都不起作用。

当我执行这个命令时,它会显示如下错误:

Enter userID: Enter password: Exception in thread "main" java.io.IOException: Unable to mask input in console. at..

我不知道这个jar文件的源代码。

这可能是什么原因?

【问题讨论】:

  • 您在下面尝试了吗? java javaprogram 用户名密码
  • @Srivignesh 它提示用户输入而不是命令行参数
  • jd-gui 工具是一个轻量级的反编译器,有助于查看源代码
  • "myusername\npassword\n" 最后一行换行?虽然那个错误是另外一回事......
  • @JoopEggen echo 在其输出中附加一个换行符。

标签: java bash shell unix


【解决方案1】:

程序很可能不是从标准输入读取密码,而是从终端读取密码。有一个程序叫expect,它基本上是一种用于编写与终端程序交互的语言。

看看http://expect.sourceforge.net/

【讨论】:

    【解决方案2】:

    查看expect,它有助于与交互式程序进行编程对话。此外,如果您想了解更多关于您正在使用的 *.jar 文件的来源,您可以反编译它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2018-12-13
      • 2021-07-09
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多