2012-04-25 17 views
28

मैं एंड्रॉइड बाजार पर होस्ट करने वाले एप्लिकेशन पर काम कर रहा हूं।एंड्रॉइड को एप्लिकेशन को तुरंत चालू करने में असमर्थ java.lang.ClassNotFoundException:

आवेदन java.lang.ClassNotFoundException

एप्लिकेशन डाउनलोड की 10,000-50,000 के बीच हैं दृष्टांत करने में असमर्थ: कभी-कभी (महीने में एक बार) मैं एक क्रैश रिपोर्ट मिल गया। मुझे नहीं पता कि कुछ अपवादों पर यह अपवाद क्यों नहीं उठाए गए हैं (मैंने इसे 3 अलग-अलग उपकरणों पर परीक्षण किया है & मैं इसे अपने अंत में फिर से प्रस्तुत नहीं कर सका)।

मैंने इस मुद्दे के बारे में विभिन्न एंड्रॉइड मंचों पर लेख/सुझाव पढ़े लेकिन मैं इसे हल करने में सफल नहीं हुआ। क्या किसी को भी इसी तरह के मुद्दे का सामना करना पड़ता है & मुझे सुझाव है कि मुझे क्या करना चाहिए?

नोट: मैं इस

public class MyApplication extends Application { 

} 

तरह आवेदन वर्ग का विस्तार कर रहा हूँ मैं इसे इस

<application android:icon="@drawable/app_icon" 
    android:label="@string/my_app_name" android:name="MyApplication"> 

स्टैक ट्रेस की तरह Manifest.xml में रजिस्टर:

java.lang.RuntimeException: Unable to instantiate application com.xyz.MyApplication  java.lang.ClassNotFoundException: com.xyz.MyApplication in loader dalvik.system.PathClassLoader[/mnt/asec/com.xyz-1/pkg.apk] 
at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:650) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4238) 
at android.app.ActivityThread.access$3000(ActivityThread.java:126) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2076) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4633) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.xyz.MyApplication in loader dalvik.system.PathClassLoader[/mnt/asec/com.xyz-1/pkg.apk] 
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
at android.app.Instrumentation.newApplication(Instrumentation.java:942) 
at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:645) 

मुझे नहीं पता कि कुछ उपकरणों पर एप्लिकेशन क्रैश क्यों नहीं है।

+0

क्या आप पूरा स्टैक ट्रेस जोड़ सकते हैं? –

+0

आपके एडीटी का संस्करण क्या है? – Akram

+0

@Akki एडीटी संस्करण 12 – junto

उत्तर

6

जोड़ने पर विचार मुझे लगता है कि समस्या getApplication() जो मैं 10 विभिन्न जगह में इस्तेमाल किया है के साथ है। इसलिए मैंने इसे हल करने के लिए सिंगलटन पैटर्न का उपयोग किया है।

public class MyApplication extends Application { 
    private static MyApplication me; 

    @Override 
    public void onCreate() {   
     super.onCreate(); 
     me = this ; 

    } 
    public static MyApplication getInstance() { 
     return me; 
    } 
} 

अब मैं इस

 MyApplication application = MyApplication.getInstance(); 

तरह getApplication (इस्तेमाल किया है)

 MyApplication application = (MyApplication) getApplication(); 

के insted मैं बाजार & अब इंतज़ार कर पर तय संस्करण अपलोड कर दिया है अगर वहाँ अब और इस तरह का है दुर्घटनाग्रस्त अगर सब कुछ सही हो जाता है (यदि 2 सप्ताह में कोई और दुर्घटना नहीं है) तो मैं सवाल बंद कर दूंगा। इस बीच किसी के पास बेहतर विचार है या समाधान पता है, कृपया इसे साझा करें।
धन्यवाद,

+0

मैंने बाजार पर नई रिलीज अपलोड की है और तब से मुझे "java.lang.ClassNotFoundException को तत्काल करने में असमर्थ" से संबंधित कोई क्रैश रिपोर्ट नहीं मिली है, इसलिए मुझे लगता है कि समस्या हल हो गई है। मैं हर किसी के सुझावों के लिए बहुत आभारी हूं। – junto

+0

मैंने अपनी पहली रिलीज के बाद इस अपमान का उपयोग किया है, लेकिन मुझे अभी भी कक्षा में एक या दो बार कक्षा नॉटफाउंड अपवाद प्राप्त होता है। यदि आप जो कहते हैं वह मामला था, तो क्लास नॉटफाउंड के बजाय क्लासकास्ट अपवाद के साथ क्रैश होना चाहिए। – Alexey

+1

हाँ, मुझे उपयोगकर्ताओं के एक छोटे से% से इस तरह की दुर्घटनाएं मिलती हैं। मैं कास्टिंग दृष्टिकोण का उपयोग करता हूं लेकिन मैं नहीं देख सकता कि सिंगलटन दृष्टिकोण का उपयोग करते समय इससे कोई फर्क क्यों पड़ता है। चूंकि यह लोगों के # छोटे लोगों के साथ होता है, इसलिए यह जानना मुश्किल हो सकता है कि आपने वास्तव में समस्या को कब ठीक किया है। @junto क्या आपको सिंगलटन दृष्टिकोण में बदलने के बाद इस तरह दुर्घटनाग्रस्त हो गया है? – Fraggle

0
android:name=".MyApplication" 

भी पूर्ण पैकेज

+0

क्षमा करें वास्तविक कोड में कोई जगह नहीं है, स्थान यहां संपादन के कारण था और मुझे इसके लिए खेद है। आपके समय के लिए धन्यवाद। मेरे पिछले निर्माण में मैंने पूर्ण पक्केज पथ का उपयोग किया लेकिन मुझे एक ही क्रैश रिपोर्ट मिली। – junto

11

कुछ अन्य समान प्रश्न बताते हैं कि यह उपयोगकर्ता त्रुटि हो सकती है। "/ mnt/asec/..." इंगित करता है कि ऐप sdcard से चल रहा है। अगर sdcard हटा दिया गया है तो यह त्रुटि उत्पन्न कर सकता है। तृतीय पक्ष ऐप्स या रूट डिवाइस शायद ऐप को एसडीकार्ड में ले जा सकते हैं भले ही इसे मैनिफेस्ट द्वारा अनुमति न दें।

Similar Question

+2

मुझे लगता है कि यह समस्या की असली जड़ है। मेरे ऐप में वर्तमान में installLocation = "auto" है। जब से मैंने "आंतरिक" से स्विच किया था तब से समस्याएं थीं। एसडी कार्ड के साथ अन्य मुद्दे थे, जहां ऐप बस उपयोगकर्ता डिवाइस से गायब हो जाता है। एंड्रॉइड टूटा हुआ :( – Fraggle

+0

सहमत हैं ... मेरे मामले में त्रुटि 380k सक्रिय उपयोगकर्ताओं के लिए 44 बार रिपोर्ट की गई थी। मेरे ऐप ने स्थान ऑटो इंस्टॉल किया है। इसकी रिपोर्ट करने वाले कंक्रीट डिवाइस ड्रॉइड रेजर हैं। एचटीसी एवो, वन, डिजायर, सेंसेशन। सोनी एक्सपीरिया। फिर विभिन्न सैमसंग गैलेक्सी एस 2,3,4 और नोट। सभी उपरोक्त फोनों में माइक्रो एसडी कार्ड लगता है। दिलचस्प बात यह है कि किसी भी नेक्सस द्वारा त्रुटि की सूचना नहीं दी गई थी। हालांकि मुझे यकीन नहीं है कि "/ mnt/asec/..." केवल माइक्रोएसडी कार्ड को इंगित करता है, न कि यूएसबी स्टोरेज के लिए। – petrsyn

1

मेरे मामले में, मैं संकलन किया गया था और ग्रहण एडीटी के साथ हस्ताक्षर करने (फ़ाइल> निर्यात करें> Android एप्लिकेशन के साथ ...) लेकिन कुछ वर्गों लापता अगर मैं अपने .apk डिकंपाइल। इसे हल करने के लिए मैं "एक हस्ताक्षरित एपीके निर्यात करें" का उपयोग करता हूं और jarsigner और zipalign का उपयोग करके इसे साइन करता हूं।

+0

मुझे बस हस्ताक्षरित पैकेज को फिर से निर्यात करने की आवश्यकता है। मुझे मैन्युअल रूप से jarsigner और zipalign का उपयोग करने की आवश्यकता नहीं थी। – faizal

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