Java控制台API

Java控制台API,java,console,Java,Console,我使用eclipse尝试了java.io.ConsoleAPI。我的示例代码如下 package app; import java.io.Console; public class MainClass { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Console conso

我使用eclipse尝试了
java.io.Console
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 MainClass.main(MainClass.java:11)

我哪里出错了?谢谢。

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

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


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

因为您在一篇评论中提到您正在使用Eclipse,所以根据这篇评论,目前似乎不支持Eclipse中的

该方法返回与当前Java虚拟机关联的控制台,如果没有控制台,则返回
null
。从
系统控制台
方法的文档中:

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

返回:

系统控制台(如果有),否则
null

不幸的是,这是正确的行为。您的代码中没有错误。唯一可以改进的是对
控制台
对象执行
null
检查,查看是否返回了某些内容;这将通过尝试使用不存在的
控制台
对象来防止出现
NullPointerException

例如:

Console c = System.console();

if (c == null) {
    System.out.println("No console available");
} else {
    // Use the returned Console.
}

如何解决这个问题?我应该在命令行中运行应用程序,而不是在eclipse中使用run按钮吗?我用一个类似问题的链接更新了答案-您可以使用外部控制台、批处理文件和/或远程调试来解决这个问题。Eclipse bug DB中还有一个指向该问题的链接。这只是一个吹毛求疵的地方,但我会使用System.err.println而不是System.out.println