2012-03-22 11 views
43

पर अपडेट किया गया आज मैंने अपने एडीटी और एसडीके टूल्स को v17 में अपडेट किया और का उपयोग करके मेरी परियोजनाएं Google की जीसन जार लाइब्रेरी ने NoClassDefFoundError को फेंकना शुरू कर दिया। यहां लॉगक आउटपुट है:एडीटी और एसडीके उपकरण के बाद जीसन नोक्लास डीफफाउंड एरर v17

> 03-22 12:30:58.941: E/AndroidRuntime(21672): FATAL EXCEPTION: main 
> 03-22 12:30:58.941: E/AndroidRuntime(21672): 
> java.lang.NoClassDefFoundError: com.google.gson.Gson 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> com.matriksdata.conn.XRequestHandler.connect(XRequestHandler.java:35) 
> 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> com.matriksdata.conn.XRequestHandler.makeRequest(XRequestHandler.java: 
> 29) 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> com.matriksdata.bavul.XBaseWithConnectionActivity.makeRequest(XBaseWithConnectionActivity.java: 
> 46) 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> com.matriksdata.ui.login.SplashScreenActivity.onCreate(SplashScreenActivity.java: 
> 36) 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> android.app.Activity.performCreate(Activity.java:4465) 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 
> 1049) 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 
> 1919) 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 
> 1980) 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> android.app.ActivityThread.access$600(ActivityThread.java:122) 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
> 03-22 12:30:58.941: E/AndroidRuntime(21672): at 
> android.os.Handler.dispatchMessage(Handler.java:99) 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> android.os.Looper.loop(Looper.java:137) 03-22 12:30:58.941: 
> E/AndroidRuntime(21672): at 
> android.app.ActivityThread.main(ActivityThread.java:4340) 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> java.lang.reflect.Method.invokeNative(Native Method) 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> java.lang.reflect.Method.invoke(Method.java:511) 03-22 12:30:58.941: 
> E/AndroidRuntime(21672): at com.android.internal.os.ZygoteInit 
> $MethodAndArgsCaller.run(ZygoteInit.java:784) 03-22 12:30:58.941: 
> E/AndroidRuntime(21672): at 
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-22 
> 12:30:58.941: E/AndroidRuntime(21672): at 
> dalvik.system.NativeStart.main(Native Method) 

कोई विचार?

+0

क्या आपने ग्रहण से परियोजना को साफ करने की कोशिश की है? – DNRN

उत्तर

77

मुझे आज भी इसी तरह की समस्या का सामना करना पड़ा।

यह मेरे लिए यह तय:

  • निकालें सभी Android लाइब्रेरी परियोजनाओं और निर्माण पथ से बाहरी जार।
  • अपनी परियोजना में 'libs' नाम का एक फ़ोल्डर बनाएं।
  • उस फ़ोल्डर में सभी बाहरी .jars रखें, एडीटी अब उन्हें 'एंड्रॉइड निर्भरता' के तहत रखना चाहिए।
  • अपनी पिछली एंड्रॉइड लाइब्रेरी परियोजनाओं को सामान्य तरीके से दोबारा आयात करें।

मुद्दा यह है कि बाहरी जार जब गुण का उपयोग कर डिफ़ॉल्ट रूप से 'libs' फ़ोल्डर में नहीं रखा जाता है - जावा का निर्माण पथ बाहरी जार जोड़े होते, बल्कि वे के तहत रखा जाता है 'संदर्भित पुस्तकालय' 'एंड्रॉयड निर्भरता' के स्थान पर और यह NoClassDefFoundError का कारण बनता है।

कृपया, अधिक जानकारी के लिए Dealing with dependencies in Android projects देखें।

+0

क्या आप कृपया अपनी पोस्ट को विस्तारित कर सकते हैं कि आप इस कॉन्फ़िगरेशन के साथ ** स्रोत ** और ** javadoc ** कैसे लिंक करेंगे? – JJD

+0

इस रिपोर्ट के लिए टिप्पणियों में कुछ "कैसे-कैसे" फिक्स स्रोत और जावाडॉक्स हैं: [लिंक] (http://code.google.com/p/android/issues/detail?id=27490) – Freddroid

+0

नाइस ! ठीक काम करता है! धन्यवाद @ फ्रेडडमैन। –

0

बिल्ड पथ में अपनी जीएसओ लाइब्रेरी की जांच करें। शायद जीसन पुस्तकालय accesible नहीं हैं।

10

एसडीके टूल्स 17 के लिए आपको अपने पुस्तकालय प्रोजेक्ट के फ़ोल्डर को "lib" से "libs" का नाम बदलने की आवश्यकता है जैसा कि here सुझाया गया है। this पर भी एक नज़र डालें।

2

मैंने अपने ब्लॉग में एक त्वरित पोस्ट बनाई है जो बताती है कि उन समस्याओं को कैसे ठीक किया जाए। इसे पुस्तकालयों और एक बदलाव से किया गया है जो उन्होंने ग्रहण को अब पुस्तकालयों का प्रबंधन कैसे किया है। यदि आप चाहें तो आप इसे यहां देख सकते हैं: http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/

5

इस साइट में सरल समाधान जो मेरे लिए काम किया है अद्यतन करने के बाद NoClassDefFoundException सामना कर रहे हैं, "आदेश और निर्यात" के अंतर्गत लाइब्रेरी के चेकबॉक्स का चयन करें।टैब पुस्तकालयों में

select Google APIs (optional) 
select Dependencies 
select Android Private Libraries 
[-] src 
[-] gen 

और:

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

+2

यह मेरे लिए तय है, लेकिन परियोजना की "सफाई" की बजाय, मुझे ग्रहण को पुनरारंभ करना पड़ा। – CQM

+0

@ सीक्यूएम, टिप्पणी के लिए धन्यवाद, मेरे लिए ग्रहण को फिर से शुरू करने के लिए भी काम किया, जबकि परियोजना की सफाई नहीं हुई। – GChorn

2

चेक आदेश के रूप में बनाने के लिए और में

Project->Properties->Java build path->Order and Export: 

आदेश का चयन करता है और चयन :

निर्भरता निजी पुस्तकालयों ('libs' निर्देशिका में जार) दूसरों

मेरे लिए काम किया!

13
  1. सही परियोजना क्लिक करें और गुण
  2. चुनें जाओ जावा बिल्ड पथ आदेश और निर्यात करने के लिए।
  3. टिक 'एंड्रॉयड निजी पुस्तकालय'
  4. परियोजना, क्लिक करें स्वच्छ
+0

इससे मेरी मदद की और मेरे घंटों को बचाया –

+0

धन्यवाद कि एकमात्र चीज जिसने मेरी मदद की – clearwater

0

मैं बहुत हल करने के लिए इस मुद्दे से परे का निर्माण पथ पर GSON जार जोड़ने के लिए, एक पुस्तकालय परियोजना में GSON उपयोग कर रहा हूँ, मैं यह घोषणा की जरूरत मेरी लाइब्रेरी प्रोजेक्ट मेनिफेस्ट पर नीचे जैसा दिखता है:

<uses-library android:name="com.google.gson" /> 
संबंधित मुद्दे