您当前的位置: 首页 >  Java

Dongguo丶

暂无认证

  • 2浏览

    0关注

    472博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

java Console 控制台为null问题 Console con = System.console()

Dongguo丶 发布时间:2018-11-27 22:33:05 ,浏览量:2

问题描述 从控制台输入中一般都会使用Scanner类,但是读取密码时JavaSE6引入了Console类,测试代码如下:

   

     Console console =  System.console();
        System.out.println(console);
        System.out.print("请输入你的名字:");
        String personName = console.readLine();
        System.out.print("请输入你的密码:");
        char[] password = console.readPassword();

该段代码在Eclipse的控制台中打印出来的结果是console的值为null.

原因   如果Java程序要与windows下的cmd或者Linux下的Terminal交互,就可以使用这个Java Console类代劳。Java要与Console进行交互,不总是能得到可用的Java Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。    但当使用Eclipse等IDE运行以上代码时Console中将会为null。    表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。在Eclipse诸如类似的IDE工具中运行Console类。如果没有对Console实例判空操作,结果使用了该实例会抛出java.lang.NullPointerException异常。   

关注
打赏
1638062488
查看更多评论
立即登录/注册

微信扫码登录

0.0394s