2012-03-07 19 views
8

असमर्थ मैं अपने एंड्रॉयड आवेदन में त्रुटि मिली है। त्रुटि स्पष्ट है, यह मेरे रिसीवर की कक्षा फ़ाइल नहीं मिल सकती है। लेकिन मेरी मेनिफेस्ट फ़ाइल, पैकेज और सब कुछ ठीक है और मेरे पास कोई संकेत नहीं है कि क्या हो रहा है।का दृष्टांत को रिसीवर java.lang.ClassNotFoundException

package dti.obd.reader; 

import dti.obd.reader.service.MainService; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class BootReceiver extends BroadcastReceiver 
{ 
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      Intent serviceIntent = new Intent(MainService.class.getName()); 
      context.startService(serviceIntent); 
     } 
} 

और मेरे मैनिफ़ेस्ट फ़ाइल:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="dti.obd.reader" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="8" /> 


    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 

     <service android:name=".service.MainService" > 
      <intent-filter > 
       <action android:name="dti.obd.reader.service.MainService" /> 
      </intent-filter> 
     </service> 

     <receiver android:name="dti.obd.reader.BootReceiver" > 
      <intent-filter > 
       <action android:name="android.intent.action.BOOT_COMPLETED" > 
       </action> 
      </intent-filter> 
     </receiver> 
    </application> 

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

</manifest> 

किसी erro जानता है यहाँ मेरी कोड है? ऐसा लगता है कि पैकेज और नाम सब ठीक हैं ...

उत्तर

16

आप अपने Reciever डाल करने के लिए है:

<receiver android:name=".BootReceiver" > 

यह पैकेज नाम ही है क्योंकि आप परिभाषित कहते हैं कुछ package में। यदि यह मुख्य पैकेज पर है तो सिस्टम तुरंत चालू नहीं हो पाएगा।

मुझे एक ही समस्या थी। सौभाग्य से इंटरनेट पर त्रुटि खोजने से पहले मैं एक और जावा परियोजना कर रहा था। मुझे अभी एहसास हुआ कि वहां की बग इस तरह की थी। अभी कोशिश की और काम किया। :)

+0

धन्यवाद! ठीक काम किया, यह उत्तर स्वीकार किया जाना चाहिए! आपके लिए +1 –

+7

क्या आप इसे थोड़ा और समझा सकते हैं? – levi

1

कोशिश:

package="dti.obd.reader" 
+0

मैं पहले से ही इस तरह की कोशिश की है के साथ उपयोगी हो जाएगा संकल्प लिया। Thats क्यों मैं पैकेज फिर से especify बदलने के लिए बदल दिया ... लेकिन उनमें से कोई भी काम नहीं करते हैं। आपकी सहायताके लिए धन्यवाद! –

+1

आपको इस तरह के पैकेज 'और' लिखने 'रिसीवर' लाइन निर्दिष्ट करने की आवश्यकता है। क्या आप दोनों एक ही समय में थे? Http://www.coderanch.com/t/439875/Android/Mobile/make-your-plication-run-as पर भी एक नज़र डालें, शायद आप कुछ अलग खोज सकते हैं। (यह कोई फर्क नहीं पड़ता है) लेकिन 'एप्लिकेशन' लाइन के ऊपर 'उपयोगकर्ता-अनुमति' पंक्ति डालें। – Caner

+0

मैंने सब कुछ करने की कोशिश की, लेकिन कुछ भी काम नहीं करता है। मैं इस त्रुटि के बारे में पूरी तरह पागल हो रहा हूँ। मैं पैकेज के नाम के साथ अपने कुछ, कुछ प्रतिबंध यह है कि मुझे नहीं पता ... –

1

मुझे भी इस समस्या का सामना करना पड़ा है। मैनिफेस्ट फ़ाइल में रिसीवर परिभाषा में पूरा पैकेज नाम जोड़ने से मदद नहीं मिली। समस्या मेरी एपीके फ़ाइल के अनुरूप एक पुरानी ओडेक्स फ़ाइल थी। एंड्रॉइड सिस्टम ओडेक्स फ़ाइल से कक्षाएं लोड करता है इसलिए रिसीवर क्लास नहीं मिल सकता है।

समाधान:

  • वर्ष Odex फ़ाइल को निकालें या
  • आपके apk को एक नया नाम दें

http://www.addictivetips.com/mobile/what-is-odex-and-deodex-in-android-complete-guide/

+1

मुझे एक ही समस्या का सामना करना पड़ा। पिछले संस्करण, मैं एक रिसीवर नाम ए का उपयोग करता हूं, वर्तमान संस्करण में, मैंने इसे हटा दिया है, फिर यह त्रुटि प्राप्त करें – Jonguo

+0

हमें हमारे आवेदन में यह अपवाद ऑनलाइन मिला है। और यह पता चला है कि ये समाधान कामकाज कर सकते हैं। – Cobain

0

आपके पास कुछ पैकेज में अपने रिसीवर डाल करने के लिए इसके बजाय का पूरा पथ जोड़ें Recieve आर

<receiver android:name="com.yourpackage.BootReceiver" > 

यह weired ध्वनि लेकिन मेरे मामले में यह मुद्दा

आशा किसी इस अनुभव

संबंधित मुद्दे