尝试从Android中的活动启动服务时发生ClassNotFoundException

尝试从Android中的活动启动服务时发生ClassNotFoundException,android,exception,service,Android,Exception,Service,我正在尝试从我的活动开始一项服务,如下所示: startService(new Intent(MyActivity.this, MyService.class)); <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true"> <servic

我正在尝试从我的活动开始一项服务,如下所示:

startService(new Intent(MyActivity.this,
                MyService.class));
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true">
        <service android:name=".MyService" android:exported="false"></service>
        ...
    </application>
然而,有一个问题。什么也没发生。我在后台进行了调试,我可以看到引导类加载器在ClassNotFoundException中出错。我不知道怎么会发生这种情况,因为我在清单文件中获得了如下服务类:

startService(new Intent(MyActivity.this,
                MyService.class));
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true">
        <service android:name=".MyService" android:exported="false"></service>
        ...
    </application>

...

它与MyActivity位于同一个包中。我有点疯了。有什么问题吗?我调试到MyService中,但是
onCreate()
onStartCommand()
也没有被调用。

这种垃圾有时会发生。尝试清理项目

另外,如果您是从其他包启动服务,请尝试使用完整包,然后使用类名

Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);

这种事情有时候会发生。尝试清理项目

另外,如果您是从其他包启动服务,请尝试使用完整包,然后使用类名

Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);

这项服务是打包的吗?如果是这样,您可能需要使用清单中服务类的完整路径。

服务是否在某个包中?如果是这样,您可能需要在清单中使用服务类的完整路径。

只是一个想法:如果您转到项目的“bin”文件夹,应该有您的“*.apk”文件。将其重命名为zip,解压并调查是否存在您的服务类。我怀疑smth在构建步骤出错,而您的类不在apk中。删除bin文件夹中的所有内容,并设法从头开始重建项目。然后再次解压/检查。

只是一个想法:如果你转到项目的“bin”文件夹,那里应该有你的“*.apk”文件。将其重命名为zip,解压并调查是否存在您的服务类。我怀疑smth在构建步骤出错,而您的类不在apk中。删除bin文件夹中的所有内容,并设法从头开始重建项目。然后再次解压缩/检查。

尝试以下操作:

startService(new Intent(this, MyService.class));
如果仍然存在问题,请在Manifest.XML文件中将包名称固定到服务名称的开头,如下所示:

<service android:name="mypackagename.MyService"></service>

不知道你为什么会有“导出”代码

试试这个:

startService(new Intent(this, MyService.class));
如果仍然存在问题,请在Manifest.XML文件中将包名称固定到服务名称的开头,如下所示:

<service android:name="mypackagename.MyService"></service>


不知道你为什么会有“导出”代码

我已经试过了。我甚至重新启动了Eclipse和我的手机。我在我的另一部手机上也试过了,但它一直抛出那个异常…我已经试过了。我甚至重新启动了Eclipse和我的手机。我也在我的另一部手机上尝试过,但它一直抛出异常…谢谢,这解决了我的问题…我也打电话给adb卸载,只是为了确保从我的机器人上删除错误代码。谢谢,这解决了我的问题…我打电话给adb卸载,也是为了确保从我的机器人上删除错误代码。