在eclipse中使用console出现java.lang.NullPointerException

先上代码:

import java.io.Console;
public class TestConsole {
	public static void main(String[] args) {
		Console cons = System.console();
		char[] pwd = cons.readPassword("pwd:");
		System.out.println(pwd.toString());
	}
}

Exception in thread "main" java.lang.NullPointerException

查看说明文档知道了原因如下:

访问与当前Java虚拟机关联的基于字符的控制台设备(如果有的话)的方法。
虚拟机是否具有控制台取决于底层平台以及虚拟机的调用方式。 如果虚拟机从交互式命令行启动,而不重定向标准输入和输出流,则其控制台将存在,并且通常将连接到启动虚拟机的键盘和显示器。 如果虚拟机是自动启动的,例如由后台作业调度程序启动,则通常不具有控制台。

如果这个虚拟机有一个控制台,那么它由一个这个类的唯一实例表示,可以通过调用System.console()方法获得。 如果没有控制台设备可用,则该方法的调用将返回null 。

读取和写入操作是同步的,以保证关键操作的原子完成; 因此调用方法readLine() , readPassword() , format() , printf()以及读,格式和写在由返回的对象的操作reader()和writer()在多线程方案可能阻塞。

对reader()和writer()返回的对象调用close()将不会关闭这些对象的基础流。

当达到控制台输入流的结尾时,控制台读取方法返回null ,例如在Windows上通过在Unix或control-Z上键入control-D。 如果以后在控制台的输入设备上输入其他字符,后续读取操作将成功。

除非另有说明,否则传递null参数到此类中的任何方法将导致NullPointerException被抛出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值