2013-04-16 9 views
9

मैं एक वर्ग है कि आवेदन वर्ग प्रदान करता है और कभी कभी मेरे डेवलपर कंसोल में मैं ClassNotFoundExceptionकक्षा का विस्तार आवेदन फेंकता ClassNotFoundException

java.lang.RuntimeException: Unable to instantiate application ecm2.android.ActiveStore: java.lang.ClassNotFoundException: ecm2.android.ActiveStore 
at android.app.LoadedApk.makeApplication(LoadedApk.java:501) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4221) 
at android.app.ActivityThread.access$1400(ActivityThread.java:139) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4918) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: ecm2.android.ActiveStore 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
at android.app.Instrumentation.newApplication(Instrumentation.java:982) 
at android.app.LoadedApk.makeApplication(LoadedApk.java:496) 
... 11 more 

कह इस तरह मैं इसे अपने प्रकट

<application 
    android:name=".ActiveStore" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar" > 
में घोषित एक त्रुटि दिखाई

ActiveStore केवल एक वर्ग है जिसमें अलार्म शुरू करने और रद्द करने के लिए एक एप्लिकेशन संदर्भ है, तो मुझे यह त्रुटि क्यों मिलेगी?

अद्यतन:

मैं अभी भी अपने डेवलपर पृष्ठ में समय-समय पर यह त्रुटि देख रहा हूँ भी वर्ग के नाम का एक . सामने डालने के बाद। यह केवल एक अद्यतन पर होने या नए

+0

@blackbelt हाँ यह मेरे रूट/डिफ़ॉल्ट फ़ोल्डर में है – tyczj

+1

यहां मेरी व्याख्या के साथ जांचें http://stackoverflow.com/questions/17253178/android-cant-find-class-even-though-its-declared-in- मेनिफेस्ट/17253947 # 17253947 और यहां पूछे गए मुद्दों से भी जांच करें। –

+0

एप्लिकेशन क्लास लाइब्रेरी प्रोजेक्ट में है? – user1140237

उत्तर

4

शायद क्योंकि आप वर्ग के नाम के सामने

.ActiveStore 
(जो Dalvik बताने के लिए है कि अपने वर्ग आपके एप्लिकेशन का पैकेज के अंतर्गत आता है में मदद करता है) में डॉट भूल रहे हैं स्थापित लगता है

लेकिन संदेह में हैं, दोनों पूरे मैनिफ़ेस्ट फ़ाइल और अपने जावा

0

मैं भी इस समस्या को एक बहुत दिखाई दे रही है और कोई स्पष्टीकरण पोस्ट करें। मैंने लोगों को यह कहते हुए देखा है कि यह एक दुर्घटना के बाद हो सकता है। माना जाता है कि, एक दुर्घटना के बाद, क्लासलोडर "खराब" स्थिति में हो सकता है और कक्षाओं को लोड करने में सक्षम नहीं है। असल में इसका मतलब यह होगा कि एक पूर्व बग इस समस्या का असली स्रोत है। अस्पष्ट होने के लिए खेद है, अगर आपको अधिक सटीक स्पष्टीकरण मिलता है तो कृपया अपडेट करें।

0

आप कोड स्टार्टअप पर चलाने की जरूरत है (उदाहरण के लिए BOOT_COMPLETED पर एक BroadcastReceiver या एक AppWidget) है, तो आप इस प्राप्त कर सकते हैं उपयोगकर्ता एक बाहरी एसडी कार्ड पर आपका ऐप इंस्टॉल किया गया है। इस बिंदु पर एसडी कार्ड अभी तक आरोहित नहीं किया जा सकता है, इस प्रकार आपकी एप्लिकेशन क्लास लोड नहीं की जा सकती है। आप इंस्टॉलेशन मोड को internalOnly पर सेट करके या BroadcastReceiver के मामले में ACTION_MEDIA_MOUNTED के प्रसारण की प्रतीक्षा करके इसे हल कर सकते हैं। android intent for sdcard ready

+0

मैं BOOT_COMPLETED का उपयोग नहीं करता हूं या एक ऐप विजेट – tyczj

+0

है जो कुछ कारण हैं जो इसका कारण बन सकते हैं। यह तब भी हो सकता है जब वे एसडी कार्ड हटा दें। – keyboardr

0

क्या आपने अपने मेनिफेस्ट में अपनी कक्षा का संदर्भ देने के लिए पूरी तरह से योग्य पैकेज नाम का उपयोग करने का प्रयास किया है?

.ActiveStore 

com.myapp.package.ActiveStore 

किसी भी संयोग से बन जाएगा आप ProGuard या अपने कोड अंधेरा के समान कुछ भी उपयोग कर रहे हैं?

+0

हाँ मैंने यह किया है – tyczj

+0

पूरी तरह से योग्य पैकेज नाम में – Gomino

+0

@gomino सही शुरुआत में एक बिंदु नहीं होना चाहिए। मेरी गलती –

0

मैंने इससे पहले अनुभव किया है जब मैंने किसी विशेष एपीआई स्तर में उपलब्ध कक्षाओं/इंटरफेस में से एक को विस्तारित या कार्यान्वित नहीं किया था। यह इसे उचित तरीके से नहीं बताता है।

+0

स्थिर प्रारंभिक आदि के लिए भी जाती है – nickmartens1980

1

अपने प्रकट में आप या तो कुछ ऐसा होना चाहिए:

package="path.to.project.root" 
... 
<application 
    android:name=".MyApplication" 

या के रूप में पहले ही उल्लेख किया गया है

<application 
    android:name="path.to.project.root.MyApplication" 

यह भी सुनिश्चित करें अपने MyApplication वर्ग के निर्माता सार्वजनिक है या नहीं।

0

मैंने यह देखा है जब एक अलग वर्ग के लिए सत्यापित त्रुटियां हैं, प्रश्न में वर्ग निर्भर करता है। वापस स्क्रॉल करें और देखें कि पूर्ण लॉगक आउटपुट में कोई सत्यापन त्रुटियां हैं या नहीं।

यदि ecm2.android.ActiveStore एक वर्ग पर निर्भर करता है जो सत्यापन में विफल रहता है, तो आपको ecm2.android.ActiveStore के लिए नहीं मिला क्लास ecm2.android.ActiveStore पर निर्भर करता है।

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