Eclipse console返回null

来源:互联网 发布:js根据id获取对象 编辑:程序博客网 时间:2024/05/29 19:01

一、代码测试

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();    }}

二、测试结果

  1. 通过Unix/Linux Terminal或者windows cmd方式运行时,readFromConsole被执行。
  2. 通过在eclipse中运行时,readFromScanner被执行。

三、原因

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

  1. 访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。
  2. 虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。
  3. 如果此虚拟机具有控制台,那么它将由此类唯一的实例(可通过调用 System.console() 方法获得)表示。如果没有可用的控制台设备,那么对该方法的调用将返回 null。
0 0
原创粉丝点击