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. 
} 

System.console如果您不在控制台中运行应用程序,则返回null。有关建议,请参阅this question

+0

如何解决这一问题?我是否必须在命令行中运行应用程序,而不是在eclipse中使用RUN按钮? – Bharani 2009-06-15 14:49:07

+0

我用一个类似问题的链接更新了答案 - 您可以使用外部控制台,批处理文件和/或远程调试来解决此问题。在Eclipse bug DB中也有一个链接。 – McDowell 2009-06-15 14:52:37

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

你必须在使用它之前测试console是否为null。