System.console() 返回 null

2022-08-31 12:02:43

我使用 of 从用户那里获取输入/新密码,但想屏蔽密码,所以我正在尝试使用类。问题是,在 Eclipse 中调试应用程序时会返回。我是Java和Eclipse的新手,不确定这是实现目标的最佳方式吗?我右键单击源文件并选择“调试为”>“Java应用程序”。有什么解决方法吗?readLineBufferedReaderjava.io.ConsoleSystem.console()null


答案 1

这是一个错误#122429日食


答案 2

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

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 中进行测试时,您的密码输入将以清晰显示。至少,您将能够进行测试。只是不要在测试时输入您的真实密码。将其保留为生产用途;)。


推荐