带有GCM服务的java.lang.ClassNotFoundException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有GCM服务的java.lang.ClassNotFoundException相关的知识,希望对你有一定的参考价值。

我试图让GCM在我的android-App上运行,我在调用GCMRegistrar.register()后不久收到这个奇怪的错误消息(app-name是我无法透露的app的名称):

 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

那是什么意思?

答案

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

另一答案

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

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

以上是关于带有GCM服务的java.lang.ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

带有登录系统的 GCM

java 代码运行之后出现以下错误,到底神马意思呢

GCM 云服务器可以访问我的应用服务器数据库表吗?

如何使用 Android 代码中的 GCM CCS 进行上游消息传递服务?

Google Cloud端点模块与GCM的Google云端模块?

带有 GCM 的 iOS 推送通知