带有GCM服务的java.lang.ClassNotFoundException

时间:2014-03-31 13:22:33

标签: android noclassdeffounderror google-cloud-messaging

我正在尝试让GCM在我的Android-App上运行,我在调用GCMRegistrar.register()后不久就收到这个奇怪的错误消息(app-name是我可以使用的应用程序的名称&t; t公开了):

 java.lang.ClassNotFoundException: Didn't find class 
 "com.<companyname>.<appname>.GCMIntentService" on path: DexPathList[[zip file 
 "/system/framework/com.google.android.maps.jar", zip file "/data/app/<app-
 name>"],nativeLibraryDirectories=[/data/app-lib/<app.name>, 
 /vendor/lib, /system/lib]]

AndroidManifest的(我认为)相关部分:

 <service android:name=".GCMIntentService" />

类GCMIntentService存在于指定的路径中,我从Google提供的GCM-Client项目中复制了该文件,因此我不能解决问题所在。

有什么想法吗?

更新 我将类GCMIntentService移动到以下包:

 com.google.android.gcm.demo.app

不,我收到警告:

Unable to start service Intent { act=com.google.android.c2dm.intent.REGISTRATION 
flg=0x10 pkg=com.<company-name>.<app-name> 
cmp=com.xitaso.plugsurfing/.GCMIntentService (has extras) } U=0: not found

这是什么意思?

2 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么:GCMIntentService必须位于包名称的根目录中,在我的情况下是com.companyname.appname;我创建了一个单独的包,其中我放置了GCMIntentService类,从那时起它工作正常(至少我认为这是主要问题)。

答案 1 :(得分:0)

如果您不使用GCM并且此异常来自其他库,请执行以下操作:

 <service
     android:name="package.GCMIntentService"
     tools:node="remove" />