JDK6中的System.console()的一个小问题

JDK6中的System.console()的一个小问题

开始看《Java 6 Platform Revealed》
在MyEclipse里面写了个简单的例子,用到了java.io.Console类

     public   static   void  main(String[] args) {
        String s 
=   " hello " ;
        System.out.println(
" helloworld " );
        System.console().printf("%s%n",s);
        
// System.console().readLine();
    }
运行报错

Exception in thread  " main "  
java.lang.NullPointerException
    at ch.zhengyiyu.emptyString.main(emptyString.java:
10 )
不知道什么原因

上网搜了下也没有找到原因,很郁闷.

下午不郁闷了以后继续查找问题,最终解决

根据spec的描述
“Whether a virtual machine has a console is dependent upon the underlying platform and also upon the manner in which the virtual machine is invoked. If the virtual machine is started from an interactive command line without redirecting the standard input and output streams then its console will exist and will typically be connected to the keyboard and display from which the virtual machine was launched. If the virtual machine is started automatically, for example by a background job scheduler, then it will typically not have a console.”

基本意思就是当java程序是从命令行中运行的时候,并且标准输入输出流没有被重定向过的话,console是存在的。当vm是自动运行的(应该是包含从ide运行这种情况,system.console()返回的就是null)

你可能感兴趣的:(JDK6中的System.console()的一个小问题)