带有Console类的null对象引用

时间:2015-10-28 01:06:10

标签: java android console

我正在尝试使用format()来打印字符串,但它失败了。错误是:

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.io.Console java.io.Console.format(java.lang.String,java.lang.Object [])'

这是代码段。非常感谢任何提示

public class BootNotifier extends BroadcastReceiver
{
    public String TAG = "BootNotifier";
    Console console = System.console();
    String fmt = "%s";
    String msg = "Android boot completed successfully";

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.e(TAG, "onReceive");
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))
        {
            Log.e(TAG, "onReceive: BOOT_COMPLETED");
            console.format(fmt, msg);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

System.console()返回对与JVM关联的控制台设备的引用。如果尚未使用控制台设备配置JVM,并且默认情况下未配置JVM,则System.console()可能返回空引用。

看看javadoc for java.io.Console。它很好地概述了System.console()返回null的原因。

作为System.console()的替代方法,请尝试System。out.println()或System。err.println();

另一位用户问the same question并收到了有用的回复。

答案 1 :(得分:0)

使用此代码:

    public class BootNotifier extends BroadcastReceiver
    {
    public String TAG = "BootNotifier";
    String fmt = "%s";
    String msg = "Android boot completed successfully";

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.e(TAG, "onReceive");
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))
        {
            Log.e(TAG, "onReceive: BOOT_COMPLETED");
            System.out.println(String.format(fmt, 5));
            //As System.out.println() is not recommended to use in Android ,So You can use below code in place of System.out.println()
             Log.d(fmt,"5");

        }
    }
}