首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.console()返回null

System.console()返回null
EN

Stack Overflow用户
提问于 2010-11-17 18:55:32
回答 8查看 87.4K关注 0票数 84

我使用BufferedReaderreadLine从用户那里获取输入/新密码,但是想要屏蔽密码,所以我尝试使用java.io.Console类。问题是,在Eclipse中调试应用程序时,System.console()返回null。我是Java和Eclipse的新手,不确定这是实现的最佳方式吗?我右键单击源文件并选择"Debug As“> "Java Application”。有什么变通方法吗?

EN

回答 8

Stack Overflow用户

发布于 2011-12-14 21:11:05

这是eclipse的bug #122429

票数 37
EN

Stack Overflow用户

发布于 2012-06-26 08:38:42

下面的代码片段应该可以解决这个问题:

代码语言:javascript
运行
复制
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中测试时,您的密码输入将以清晰的形式显示。至少,您将能够进行测试。只是不要在测试时输入你的真实密码。保留它以供生产使用;)。

票数 34
EN

Stack Overflow用户

发布于 2010-11-17 19:13:48

如果没有控制台,则System.console()返回null。

您可以通过adding a layer of indirection to your code或通过在外部控制台和attaching a remote debugger中运行代码来解决此问题。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4203646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档