在我的Java程序中导致NullPointerException的原因是什么?
问题描述:
import java.io.*;
public class listjava
{
public static void main(String args[]){
Console c = System.console();
char[] pw;
pw = c.readPassword("%s","pw: ");
for (char ch: pw)
c.format("%c ",ch);
c.format("\n");
MyUtility mu = new MyUtility();
while(true)
{
String name = c.readLine("%s","input?: ");
c.format("output : %s \n",mu.doStuff(name));
}
}
}
class MyUtility{
String doStuff (String arg1){
return " result is " + arg1;
}
}
我得到了这样的错误:在我的Java程序中导致NullPointerException的原因是什么?
Exception in thread "main" java.lang.NullPointerException
at listjava.main(listjava.java:7)
为什么我的程序错了吗?
答
System.console()
返回null。
引用Java的文档:
返回与当前Java虚拟机相关联的唯一Console对象(如果有)。
因此,可能没有控制台与您的JVM相关联。您可能正在运行您的程序Eclipse或其他IDE。尝试从系统的命令行运行程序。它应该工作。
从命令行运行程序。
- 走到哪里
listjava.class
驻留 -
运行Java解释器
$ java的listjava
答
目录按照Javadoc for System.console()
:
返回:系统控制台,如果有的话,否则为空。
所以我想这是System.console()
交还null
和你的线,因此
pw = c.readPassword("%s","pw: ");
被提领null
。我不确定你想要使用什么修复程序;也许从System.in
读取?
谢谢,你说得对。还有一个问题?为什么在使用IDE时出现这种错误?谢谢! – 2011-01-30 03:21:18