system.console的NullPointerException(system.console

2019-09-17 23:30发布

我知道,这是一个noobish错误,但我不知道如何解决它。

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

字符串username = kitty.readLine( “用户名:”);

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

Answer 1:

如果你想阅读从标准输入的用户名,你可以使用此代码:

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。



Answer 2:

根据JavaDoc:

返回与当前的Java虚拟机相关联, 如果有独特的控制台对象。

如果不存在相关联的Javadoc控制台时,尖线是一种方法的一个空对象上的呼叫,因此该异常。

你如何启动应用程序?

是否一个虚拟机具有控制台取决于底层平台,也取决于在其中虚拟机被调用的方式。 如果虚拟机从一个交互式命令行开始,而不需要重新定向标准输入和输出流,那么其控制台将存在并且通常将被连接到从所述虚拟机发起的键盘和显示器。 如果虚拟机是由后台作业调度程序自动启动,例如,那么它通常不会有一个控制台。



文章来源: system.console NullPointerException