我正在使用System.console()
来读取用户密码。
我的代码:
Console console = System.console();
if (console == null) {
throw new RuntimeException("No console is available for input");
}
System.out.print("Enter the password: ");
String password = new String(console.readPassword());
当我直接运行它时(Redhat
),它正常工作。
问题是当我尝试从文本文件中读取密码时:
java -jar my_jar.jar < password.txt
我明白了:
没有可用于输入的控制台。
我该如何解决?
答案 0 :(得分:0)
此行为是预期的。引自Cosole
:
虚拟机是否具有控制台取决于 底层平台以及虚拟的方式 机器被调用。如果虚拟机是从一个启动的 交互式命令行,无需重定向标准输入和 输出流然后它的控制台将存在并且通常是 连接到键盘和显示虚拟机的显示器 发布了。
对于不使用BufferedReader
的可能解决方案,您可以阅读此答案Trying to read from the console in Java。
如果存在,您可以继续使用控制台,如果没有,则可以返回Scaner
/ App\Accrediations::with('access.section')->find(1);
。