您的位置:首页 > 编程语言 > Java开发

Eclipse console返回null

2016-05-14 21:58 471 查看

一、代码测试

import java.io.Console;
import java.util.Scanner;

public class HelloWorld {

public static void main(String[] args) {
Console console = System.console();
if(console != null){
System.out.println("console method to read input!");
readFromConsole(console);
}else{
System.out.println("scanner method to read input!");
readFromScanner();
}
}

public static void readFromConsole(Console console){
System.out.print("please input something:");
String str = console.readLine();
System.out.println("your input are: " + str);
}

public static void readFromScanner(){
Scanner sca = new Scanner(System.in);
System.out.print("please input something:");
System.out.println("your input are: " + sca.nextLine());
sca.close();

}
}


二、测试结果

通过Unix/Linux Terminal或者windows cmd方式运行时,
readFromConsole
被执行。

通过在eclipse中运行时,
readFromScanner
被执行。

三、原因

在jdk说明文档中,对console类的描述为:

访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。

虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。

如果此虚拟机具有控制台,那么它将由此类唯一的实例(可通过调用 System.console() 方法获得)表示。如果没有可用的控制台设备,那么对该方法的调用将返回 null。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: