2011-06-06 11 views
5

मैंने एक एंड्रॉइड एप्लिकेशन बनाया जो किसी अन्य एंड्रॉइड एप्लिकेशन में लाइब्रेरी के रूप में उपयोग किया जाता है। मैंने एंड्रॉइड ऐप में कुछ थर्ड पार्टी जार का इस्तेमाल किया जो पुस्तकालय के रूप में कार्य करता है। जब मैं अपने एंड्रॉइड एप्लिकेशन में इस लाइब्रेरी को लिंक करता हूं और इसे चलाता हूं, तो लाइब्रेरी में मौजूद कक्षा तक पहुंचने का प्रयास करते समय मुझे सत्यापित त्रुटि मिल रही है। क्या मुझे पता चलेगा कि मेरे लिए यहां क्या समस्या है? किसी भी मदद की बहुत सराहना की .."प्राप्त करने के कारण: java.lang.VerifyError:"

मैंने यहां लॉग संलग्न किया और पार्सर 1 पुस्तकालय के अंदर कक्षा है। जब मैं पार्सर 1 कक्षा के लिए ऑब्जेक्ट बनाने की कोशिश करता हूं तो मुझे लाइन में त्रुटि मिल रही है।

06-06 10:05:43.742: WARN/dalvikvm(224): VFY: unable to resolve static method 3084: Lorg/codehaus/jackson/JsonToken;.values()[Lorg/codehaus/jackson/JsonToken; 
06-06 10:05:43.742: DEBUG/dalvikvm(224): VFY: replacing opcode 0x71 at 0x0005 
06-06 10:05:43.742: DEBUG/dalvikvm(224): Making a copy of Lcom/support/utils/Parser1;.$SWITCH_TABLE$org$codehaus$jackson$JsonToken code (522 bytes) 
06-06 10:05:43.752: WARN/dalvikvm(224): VFY: unable to find class referenced in signature (Lorg/codehaus/jackson/JsonParser;) 
06-06 10:05:43.752: INFO/dalvikvm(224): Could not find method org.codehaus.jackson.JsonParser.getCurrentToken, referenced from method com.support.utils.Parser1.addSectionContentData 
06-06 10:05:43.761: WARN/dalvikvm(224): VFY: unable to resolve virtual method 3077: Lorg/codehaus/jackson/JsonParser;.getCurrentToken()Lorg/codehaus/jackson/JsonToken; 
06-06 10:05:43.761: DEBUG/dalvikvm(224): VFY: replacing opcode 0x74 at 0x0002 
06-06 10:05:43.761: DEBUG/dalvikvm(224): Making a copy of Lcom/support/utils/Parser1;.addSectionContentData code (2421 bytes) 
06-06 10:05:43.761: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;) 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;) 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;) 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to find exception handler at addr 0x19b 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: rejected Lcom/support/utils/Parser1;.addSectionContentData (Lorg/codehaus/jackson/JsonParser;Ljava/util/List;Lcom/support/ModelClasses/SectionContent;Lcom/support/ModelClasses/FeatureInfo;ZZLjava/lang/String;)Ljava/util/List; 
06-06 10:05:43.781: WARN/dalvikvm(224): VFY: rejecting opcode 0x0d at 0x019b 
06-06 10:05:43.781: WARN/dalvikvm(224): VFY: rejected Lcom/support/utils/Parser1;.addSectionContentData (Lorg/codehaus/jackson/JsonParser;Ljava/util/List;Lcom/support/ModelClasses/SectionContent;Lcom/support/ModelClasses/FeatureInfo;ZZLjava/lang/String;)Ljava/util/List; 
06-06 10:05:43.781: WARN/dalvikvm(224): Verifier rejected class Lcom/support/utils/Parser1; 
06-06 10:05:43.793: WARN/dalvikvm(224): threadid=15: thread exiting with uncaught exception (group=0x4001b188) 
06-06 10:05:43.793: ERROR/AndroidRuntime(224): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception 
06-06 10:05:43.812: ERROR/AndroidRuntime(224): java.lang.RuntimeException: An error occured while executing doInBackground() 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.lang.Thread.run(Thread.java:1096) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224): Caused by: java.lang.VerifyError: com.support.utils.Parser1 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at com.Sample.checkforversioning(Sample.java:652) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at com.Sample$checkVersionThread.doInBackground(Sample.java:682) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at com.Sample$checkVersionThread.doInBackground(Sample.java:1) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  ... 4 more 
06-06 10:05:43.832: INFO/Process(52): Sending signal. PID: 224 SIG: 3 

धन्यवाद, Senthil.M

+0

क्या आप त्रुटि पर अधिक स्पष्ट हो सकते हैं? और क्या आपने अपनी जार को पहले प्रोजेक्ट के अंदर कॉपी किया था और फिर इसे बिल्ड पथ में जोड़ा था या आपने इसे परियोजना के बाहर से बिल्ड पथ के अंदर ही संदर्भित किया था? – sfat

+0

मैंने अपनी लाइब्रेरी प्रोजेक्ट के अंदर lib नामक एक निर्देशिका बनाई और फिर इसे लाइब्रेरी में संदर्भित किया। और यह पुस्तकालय मूल एंड्रॉइड ऐप से जुड़ा हुआ है। – Senthil

+0

ठीक है तो। क्या आप लॉगकैट से पूर्ण त्रुटि स्टैक ट्रेस कॉपी कर सकते हैं यह देखने के लिए कि त्रुटि कहां से आ रही है? – sfat

उत्तर

2

जार जावा में कुछ ऐसा है जो Android SDK में नहीं है तक पहुँचने में कुछ के कारण हो सकता है। अपवाद के लिए LogCat में देखें और यह आपको बता सकता है कि यह क्या गुम है। यदि आपके पास तीसरे पक्ष के जार के स्रोत हैं, तो उन्हें सीधे अपनी परियोजना में शामिल करने का प्रयास करें; इससे समस्या को दूर करने में मदद मिलेगी।

आपको एसडीके के साथ आने वाले "डीएक्स" टूल के माध्यम से अपनी जार फ़ाइल चलाने की भी आवश्यकता है।

+0

मुझे तीसरे पक्ष के जार का स्रोत नहीं है .. क्या आप कृपया बता सकते हैं कि मेरे जार को डीएक्स उपकरण के माध्यम से कैसे चलाया जाए। मुझे बहुत ज्ञान नहीं है .. मैंने लिंक में दिए गए दृष्टिकोण की कोशिश की है http://androidorigin.blogspot.com/2011/02/dex-format-to-jar-format.html। फिर भी एक ही समस्या हो रही है। उत्तर के लिए धन्यवाद .. – Senthil

+0

यह वर्ग 'com.support.utils.Parser1' नहीं मिला। क्या वह कुछ है जो जार फ़ाइल में होना चाहिए? यदि आप ग्रहण का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपने [तृतीय पक्ष जार सहित निर्देशों का पालन किया] [http://developer.android.com/resources/faq/commontasks।एचटीएमएल # addexternallibrary)। इसके अलावा, यदि आप ग्रहण का उपयोग कर रहे हैं, तो डीएक्स उपकरण चलाने की कोई आवश्यकता नहीं है; यह स्वचालित रूप से किया जाता है। –

+0

हाय फ्रेंड, मैंने डेवलपर लिंक में दिए गए 1 से 3 चरणों का पालन किया। "लाइब्रेरी जोड़ें" जैसे वैकल्पिक विकल्प हैं। क्या मुझे पता है कि आप इसका जिक्र कर रहे हैं। यदि मैं उस लाइब्रेरी विकल्प को क्लिक करता हूं, तो मैं तीसरे पक्ष के जार जोड़ने में सक्षम नहीं हूं .. – Senthil

11

Eclipse में, Project properties -> Java Build Path पर जाएं। Order and Export टैब का चयन करें और अपने तीसरे पक्ष के जार की जांच करें।

+2

यह एंड्रॉइड स्टूडियो पर कैसे लागू होगा? मेरा मानना ​​है कि मुझे एक ही त्रुटि है। – tccpg288

0

आप चींटी का उपयोग कर रहे हैं, तो आप अपने सभी बाहरी जार निम्नलिखित निर्देशिका करने के लिए "libs" जोड़ना चाहिए और यह भी एक नई फ़ाइल में निम्न पंक्ति जोड़ें: ant.properties: jar.libs.dir = libs

0

यदि आप ProGuard का उपयोग करके अपने ऐप के रिलीज़ संस्करण के निर्माण के बाद VerifyError प्राप्त कर रहे हैं, तो यह कुछ अनुकूलन समस्या से संबंधित हो सकता है। Refer to the documentation, जो अनिवार्य रूप से -dontoptimize का उपयोग करके अनुकूलन अक्षम करने का सुझाव देता है।

0

/libs फ़ोल्डर से सभी जार फ़ाइलों को हटा रहा है और फिर परियोजना को साफ करके और इसे मेरे लिए तय करने के बाद फिर से जोड़ना।

0

मुझे वही त्रुटि हुई, क्योंकि मैंने v.8 API डिवाइस पर अपवाद SQLDataException को पकड़ने का प्रयास किया क्योंकि संबंधित वर्ग v.8 API में शामिल नहीं है (त्रुटि v.14 डिवाइस में नहीं होती है, जहां वह वर्ग शामिल है)। वास्तव में, SQLDataException.class केवल v.8 एपीआई के android.jar में मौजूद नहीं है, जबकि इसे v.14 एपीआई में शामिल किया गया है। इसलिए मैंने अपवाद एसक्यूएलएक्सप्शन (जिसका SQLDataException एक सबक्लास है) के साथ अपवाद SQLDataException को प्रतिस्थापित किया है और मेरा ऐप अब एपीआई के दोनों डिवाइसों पर ठीक चलता है।

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