Java控制台API
问题描述:
我使用eclipse尝试了java.io.Console
API。我的示例代码如下。Java控制台API
package app;
import java.io.Console;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Console console = System.console();
console.printf("Hello, world!!");
}
}
当我尝试运行该示例时,出现以下错误。
异常线程 “main” 显示java.lang.NullPointerException在 app.MainClass.main(MainClass.java:11)
我有什么错?谢谢。
答
由于您在评论中提到您正在使用Eclipse,因此根据此bug report,似乎目前在Eclipse中不支持Console
。
System.console
方法返回与当前Java虚拟机关联的控制台,如果没有控制台,则返回null
。从System.console
方法的文档:
返回如果任何与当前Java 虚拟机相关的唯一
Console
对象。返回:
系统控制台,如果有的话,否则
null
。
不幸的是,这是正确的行为。你的代码没有错误。唯一的改进是对Console
对象执行null
检查以查看是否返回了某个对象;这将通过尝试使用不存在的Console
对象来防止NullPointerException
。
例如:
Console c = System.console();
if (c == null) {
System.out.println("No console available");
} else {
// Use the returned Console.
}
如何解决这一问题?我是否必须在命令行中运行应用程序,而不是在eclipse中使用RUN按钮? – Bharani 2009-06-15 14:49:07
我用一个类似问题的链接更新了答案 - 您可以使用外部控制台,批处理文件和/或远程调试来解决此问题。在Eclipse bug DB中也有一个链接。 – McDowell 2009-06-15 14:52:37