Java控制台API

Bha*_*ani 3 java console

java.io.Console使用eclipse 尝试了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!!");
    }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行该示例时,我收到以下错误.

app.MainClass.main(MainClass.java:11)​​中线程"main"java.lang.NullPointerException中的异常

我哪里做错了?谢谢.

coo*_*ird 6

Console根据这个错误报告,由于你在评论中提到你正在使用Eclipse,因此似乎目前在Eclipse中没有支持.

System.console方法返回与当前Java虚拟机关联的控制台,如果没有控制台,则返回null.从System.console方法的文档:

返回Console与当前Java虚拟机关联的唯一对象(如果有).

返回:

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

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

例如:

Console c = System.console();

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