system.console NullPointerException

时间:2012-06-09 19:03:55

标签: console nullpointerexception

我知道这是一个愚蠢的错误,但我不知道如何修复它。

public static void main (String args[]){
Console kitty = System.console();
String username = kitty.readLine("Username: ");
}
  

String username = kitty.readLine("用户名:");

产生错误。有人可以告诉我我做错了什么,谢谢。

2 个答案:

答案 0 :(得分:4)

来自javadoc:

  

返回与当前Java关联的唯一Console对象   虚拟机,,如果有的话

如果没有与javadoc关联的控制台,则指向的行是对null对象的方法调用,因此是异常。

如何启动申请?

  

虚拟机是否具有控制台取决于   底层平台以及虚拟的方式   机器被调用。如果虚拟机是从一个启动的   交互式命令行,无需重定向标准输入和   输出流然后它的控制台将存在并且通常是   连接到键盘和显示虚拟机的显示器   已启动,推出。如果虚拟机自动启动,则为   例如,后台作业调度程序,它通常没有   控制台。

答案 1 :(得分:2)

如果您想从标准输入中读取用户名,可以使用以下代码:

try {
    System.out.print("Username: ");
    InputStreamReader streamReader = new InputStreamReader(System.in);
    BufferedReader bufferedReader = new BufferedReader(streamReader);
    String username = bufferedReader.readLine();
} catch (IOException e) {
    e.printStackTrace();
}

System.console()返回的控制台不一定存在,这就是你得到NullPointerException的原因。