错误:
java.lang.RuntimeException: Unable to instantiate receiver com.app_name.GcmBroadcastReceiver: java.lang.ClassNotFoundException: Didn't find class "com.app_name.GcmBroadcastReceiver" on path: DexPathList[[zip file "/data/app/com.app_name-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.app_name-2, /system/lib]]
类源代码
package com.app_name;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.WakefulBroadcastReceiver;
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
ComponentName comp = new ComponentName(context.getPackageName(), GcmIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app_name"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="com.app_name.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.app_name.permission.C2D_MESSAGE" />
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:name="Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.app_name" />
</intent-filter>
</receiver>
<service android:name=".GcmIntentService" />
</application>
</manifest>
我一直在寻找至少一个小时试图解决这个问题,而且我见过的所有解决方案都没有为我工作。大多数情况下,当出现一个简单的拼写错误时会发生此错误,但我已经反复检查了代码,并且无法弄清楚它有什么问题。如果它有所不同,我使用IntelliJ Idea(不是Android Studio)和通过USB连接的HTC One(T-Mobile US)来编译/运行应用程序。
当我将GCM消息发送到设备时会发生这种情况。所以我知道它正在收到它,但我无法弄清楚是什么原因造成的。
所有帮助将不胜感激!
固定 修复 - 问题在于我使用JDK6创建项目然后将其设置为JDK7。重新创建项目修复了它!