我正在尝试使用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);
}
}
}
答案 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");
}
}
}