2011-11-14 70 views
0

我想從我的活動啓動服務,像這樣的時候:的ClassNotFoundException試圖從活動開始服務於Android的

startService(new Intent(MyActivity.this, 
       MyService.class)); 

有一個問題但是。什麼都沒發生。我在幕後進行調試,我可以看到BootClassLoader在ClassNotFoundException異常。我不知道這怎麼可能發生,因爲我得到了我的服務類在我的清單文件是這樣的:

<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()也不會被調用。

回答

1

只是一個想法:如果你去項目的「bin」文件夾應該有你的「* .apk」文件。將其重命名爲zip,解壓縮並調查是否有您的服務類。我懷疑在構建步驟時出現錯誤,並且您的課程不在apk中。刪除bin文件夾中的所有內容,並設法從頭開始重建項目。然後再解壓/檢查。

+0

感謝您解決了我的問題....以及我打電話adb卸載太多,只是爲了確保從我的機器人擦去車的代碼。 –

3

這有點廢話有時只是發生。嘗試清理該項目...

此外,如果您從其他軟件包啓動服務,請嘗試使用完整軟件包,然後使用類名稱。

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

我已經試過了。我甚至重新啓動了Eclipse和我的手機。我也嘗試過我的其他手機,但它一直在拋出異常... –

+0

編輯我的答案。給那一槍。 – LuxuryMode

0

服務是否在某些包中?如果是這樣,您可能需要在清單中使用Service類的完整路徑。

0

試試這個:

startService(new Intent(this, MyService.class)); 

如果仍然有一個問題,在包裝上的名稱Manifest.xml文件釘到服務名稱的開頭如下:

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

不確定爲什麼你有那個「導出」的代碼在那裏。