System.console()返回null?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (51)

我用readLineBufferedReader获得输入/从用户的新密码,但希望屏蔽密码,所以我试图用java.io.Console类。问题是在Eclipse中调试应用程序时的System.console()返回结果null。我是Java和Eclipse的新手,不确定这是实现的最佳方式吗?我右键单击源文件并选择“调试为”>“Java应用程序”。有什么解决方法吗?

提问于
用户回答回答于

这个代码段应该可以做到这一点:

private String readLine(String format, Object... args) throws IOException {
    if (System.console() != null) {
        return System.console().readLine(format, args);
    }
    System.out.print(String.format(format, args));
    BufferedReader reader = new BufferedReader(new InputStreamReader(
            System.in));
    return reader.readLine();
}

private char[] readPassword(String format, Object... args)
        throws IOException {
    if (System.console() != null)
        return System.console().readPassword(format, args);
    return this.readLine(format, args).toCharArray();
}

在Eclipse中进行测试时,你的密码输入将以清除方式显示。至少,你可以测试。只是不要在测试时输入真正的密码。

用户回答回答于

扫码关注云+社区

领取腾讯云代金券