在Eclipse里创建console对象不成功,程序代码段如下:import java.io.Console;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexTestHarness {
public static void main(String[] args) {
Console console = System.console();
if(console == null){
System.err.println("No console!");
System.exit(1);
}
//若干其他代码
}
}我确信本程序代码没有其他问题,但编译运行结果总是“No console”是什么原因?

解决方案 »

  1.   

    我在命令行下运行时没有问题的。可能是IDE的问题
      

  2.   

    在命令行里可以行到,在IDE得不到.原因如下:
        虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。 如果此虚拟机具有控制台,那么它将由此类唯一的实例(可通过调用 System.console() 方法获得)表示。如果没有可用的控制台设备,那么对该方法的调用将返回 null。 
      

  3.   

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

  4.   

    在命令行里也有个问题,因为我在src文件夹里新建了一个包,名叫“regularExpression”,而我的源文件正是在这个新目录下创建的。源文件一开始有“package regularExpression;”这句话,导致无法运行,当我把源文件移到src目录下就可以了。这是为什么呢?怎么才能不移就能编译运行呢?
      

  5.   

    放在包下也可以啊.
    要先在命令行下切换到你那个类的当前路径
    然后以javac -d . RegexTestHarness.java
    运行用java 包名.RegexTestHarness
    楼主再试试