Java控制台API
我使用eclipse尝试了Java控制台API,java,console,Java,Console,我使用eclipse尝试了java.io.ConsoleAPI。我的示例代码如下 package app; import java.io.Console; public class MainClass { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Console conso
java.io.Console
API。我的示例代码如下
package app;
import java.io.Console;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Console console = System.console();
console.printf("Hello, world!!");
}
}
当我试着运行这个示例时,我得到了以下错误
线程“main”中出现异常
位于的java.lang.NullPointerException
MainClass.main(MainClass.java:11)
我哪里出错了?谢谢。如果不在控制台中运行应用程序,则返回null。有关建议,请参阅
返回唯一的控制台对象
与当前Java关联
虚拟机,如果有的话
在使用console之前,您必须测试它是否为null。因为您在一篇评论中提到您正在使用Eclipse,所以根据这篇评论,目前似乎不支持Eclipse中的 该方法返回与当前Java虚拟机关联的控制台,如果没有控制台,则返回
null
。从系统控制台方法的文档中:
返回与当前Java关联的唯一控制台对象
虚拟机,如果有的话
返回:
系统控制台(如果有),否则null
不幸的是,这是正确的行为。您的代码中没有错误。唯一可以改进的是对控制台
对象执行null
检查,查看是否返回了某些内容;这将通过尝试使用不存在的控制台
对象来防止出现NullPointerException
例如:
Console c = System.console();
if (c == null) {
System.out.println("No console available");
} else {
// Use the returned Console.
}
如何解决这个问题?我应该在命令行中运行应用程序,而不是在eclipse中使用run按钮吗?我用一个类似问题的链接更新了答案-您可以使用外部控制台、批处理文件和/或远程调试来解决这个问题。Eclipse bug DB中还有一个指向该问题的链接。这只是一个吹毛求疵的地方,但我会使用System.err.println而不是System.out.println