System.console().readPassword()空指针异常

System.console().readPassword()在idea中运行出现空指针异常

Console cons = System.console();
char[] chars = cons.readPassword();
String s=new String(chars);
System.out.println(s);

在 Idea 编译运行出现 java.lang.NullPointerException 错误. 经测试,原因是 cons 为 null.
至于 System.console() 为何返回 null,经查阅资料得知:
java.io.Console 是java 6 引入专用来访问基于字符的控制台设备。

Java 要与Console进行交互,不总是能得到可用的Java Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的 cmd,linux/unix的 terminal)中启动的,并且输入输出没有重定向到另外的地方,才可得到一个可用的Console实例。

因而建议:

  1. 在使用 Console cons = System.console() 返回的实例调用方法前,应对实例 cons 进行是否为 null 的判断,再执行其他流程。
  2. 如果你的Java程序要与Windows下的cmd或者Linux / unix 下的Terminal交互,就可以用这个Java Console类代劳。因这类交互式命令行中启动应用程序使其返回可用的 Console 实例。

最后再提醒一次

Java.io.Console 只能用在标准输入、输出流未被重定向的原始控制台中使用,在 Eclipse / Idea 或者其他 IDE 的控制台是不可用的。

————————————————
版权声明:本文为****博主「RiskAI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.****.net/jhsword/article/details/108564052

上一篇:递归整型列表的简单实现(Kotlin)


下一篇:Android:为什么Object Animators会保留起始值?