开始看《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)