2013-10-17 17 views
20

मैं अपने एंड्रॉइड स्टूडियो आईडीई के साथ पागल हो रहा हूं।एंड्रॉइड स्टूडियो - सरल-एक्सएमएल लाइब्रेरी आयात करना

मैं सेंट्रल (v2.7.1) से Maven पुस्तकालय सरल-एक्सएमएल जोड़ने के लिए तैयार हूँ

  1. परियोजना अच्छी तरह से संकलित

  2. Gradle अपने build.gradle में lib निर्भरता है:

    dependencies { 
        compile 'com.android.support:appcompat-v7:18.0.0' 
        compile 'org.simpleframework:simple-xml:2.7.1' 
    } 
    
  3. सरल-एक्सएमएल lib के लिए एंड्रॉइड स्टूडियो के मॉड्यूल सेटिंग्स में निर्यात की जांच की जाती है:

यहाँ स्क्रीनशॉट: http://s6.postimg.org/xxgj56zkx/Module_Settings.png

और मैं मिल गया क्लास नहीं मिला जब मैं अपने अनुप्रयोग चलाने ...

java.lang.NoClassDefFoundError: org.simpleframework.xml.core.Persister 

मैं हार रहा हूँ, ऐसा लगता है Gradle तरह lib पैक नहीं है और कुछ कारणों से एपीके में निर्भरता ....

कोई विचार ???

Edit1: मेरे Android स्टूडियो संस्करण 0.2.13 (नवीनतम), Gradle 0.5 है +

EDIT2:। पूर्ण build.gradle मैं

 

    buildscript { 
     repositories { 
      mavenCentral() 
     } 
     dependencies { 
      classpath 'com.android.tools.build:gradle:0.5.+' 
     } 
    } 
    apply plugin: 'android' 

    repositories { 
     mavenCentral() 
    } 

    android { 
     compileSdkVersion 17 
     buildToolsVersion "17.0.0" 

     defaultConfig { 
      minSdkVersion 14 
      targetSdkVersion 18 
     } 
    } 

    dependencies { 
     compile 'com.android.support:appcompat-v7:18.0.0' 
     compile 'org.simpleframework:simple-xml:2.7.1' 
    } 

+0

सीएफ पूर्ण build.gradle फ़ाइल के लिए मेरे संपादित 2 – existenz31

उत्तर

1

मुझे समस्या मिली।

यह गद्दी प्लगइन 0.5 था। + जैसा कि मैंने उम्मीद की थी।

एंड्रॉइड स्टूडियो 0.3.0 ग्रेडल प्लगइन 0.6 के साथ। + (ग्रैडल 1.8) अब समस्या को हल करता है।

हालांकि, मैं एंड्रॉयड स्टूडियो 0.2.13 और Gradle प्लगइन 0.5 इस तरह से साथ काम करने के आवेदन किया:

Gradle प्लगइन Maven केंद्रीय से पुस्तकालय को तैनात करने के लिए मना कर दिया है, मैं पुस्तकालय और निर्भरता के लिए डाउनलोड मेरी परियोजना की lib निर्देशिका। मैंने परियोजना की lib निर्देशिका में लाइब्रेरी का उपयोग स्थानीय रूप में करने के लिए प्रोजेक्ट को सेटअप किया है। वैकल्पिक हल के लिए

दिशा:

  1. निकालें सरल-एक्सएमएल के लिए अपने प्रोजेक्ट में सभी संदर्भों (Maven केंद्रीय) मॉड्यूल सेटिंग में

  2. कॉपी सरल-एक्सएमएल-2.7.1.jar, stax -1.2.0.jar, stax-api-1.0.1.jar और xpp3-1.1.3.3.jar मेरी परियोजना में lib निर्देशिका में

  3. मेरी परियोजना में lib simple-xml-2.7.1.jar का चयन करें और लाइब्रेरी प्रासंगिक मेनू के रूप में जोड़ें का प्रयोग करके lib आयात करें

  4. बिल्ड बदलें।इस तरह Gradle:

    निर्भरता {

    compile 'com.android.support:appcompat-v7:18.0.0' 
    
    compile files('simple-xml-2.7.1.jar') 
    

    }

नोट: निर्भरता शामिल नहीं हैं, अन्यथा वे एंड्रॉयड प्रणाली के साथ संघर्ष के रूप में Grzegorz

द्वारा
55

का उपयोग आप simple-xml पुस्तकालय जोड़ना चाहिए इस तरह:

compile('org.simpleframework:simple-xml:2.7.1') { 
    exclude group: 'stax', module: 'stax-api' 
    exclude group: 'xpp3', module: 'xpp3' 
} 

पुस्तकालय stax-api और xpp3 एंड्रॉइड कक्षाओं के साथ विवाद कर रहे हैं। इन जारों के वर्गों को एंड्रॉइड में शामिल किया गया प्रतीत होता है।

मूल dex संदेश था:

मुसीबत प्रसंस्करण "javax/xml/धारा/घटनाओं/StartElement.class":।

एक कोर वर्ग (जावा का

बीमार-सलाह दी या गलत उपयोग * या javax। *) जब कोर लाइब्रेरी का निर्माण नहीं कर रहा है।

यह आईडीई (जैसे एक्लिप्स) का उपयोग करते समय में आपके एप्लिकेशन की प्रोजेक्ट में कोर लाइब्रेरी फ़ाइल सहित अनजाने में अनजाने में होता है। यदि आप सुनिश्चित हैं कि आप जानबूझकर कोर क्लास को परिभाषित नहीं कर रहे हैं, तो यह क्या हो रहा है की सबसे अधिक संभावना है।

हालांकि, आप वास्तव में कोर नेमस्पेस में एक वर्ग को परिभाषित करने का प्रयास कर रहे हैं, जिसका स्रोत आप ले सकते हैं, उदाहरण के लिए, गैर-एंड्रॉइड वर्चुअल मशीन प्रोजेक्ट से। यह निश्चित रूप से काम नहीं करेगा। कम से कम, यह प्लेटफ़ॉर्म के भविष्य के संस्करणों के के साथ आपके ऐप की संगतता को खतरे में डाल देता है। यह अक्सर संदिग्ध वैधता भी है।

तुम सच में एक कोर पुस्तकालय का निर्माण करना चाहते हैं - तो "--core-पुस्तकालय" का उपयोग करें - जो केवल उचित है एक पूर्ण आभासी मशीन वितरण, के रूप में एक आवेदन संकलन करने का विरोध किया बनाने के हिस्से के रूप इस त्रुटि संदेश को दबाने के लिए विकल्प।

आप आगे जाना है और का उपयोग करें "--core-पुस्तकालय" लेकिन एक आवेदन के निर्माण वास्तव में हैं, तो हैं.{@}पहले से सचेत रहें हो कि आपके आवेदन अभी भी असफल हो जायेगी बनाने या चलाने के लिए, कुछ बिंदु पर करने के लिए। कृपया क्रोधित ग्राहकों के लिए तैयार रहें, उदाहरण के लिए, आपका आवेदन पर एक बार काम करने के लिए समाप्त हो जाता है, वे अपने ऑपरेटिंग सिस्टम को अपग्रेड करते हैं। आपको इस समस्या के लिए दोषी ठहराया जाएगा।

यदि आप कानूनी रूप से कोर पैकेज में होने वाले कुछ कोड का उपयोग कर रहे हैं, तो आपके पास सबसे आसान सुरक्षित विकल्प उस कोड को दोबारा पुनर्स्थापित करना है। यही है, कक्षाओं को अपने पैकेज में नामस्थान में प्रश्न में ले जाएं। इसका मतलब है कि वे कोर सिस्टम कक्षाओं के साथ कभी भी संघर्ष में नहीं होंगे। जारजार एक ऐसा उपकरण है जो इस प्रयास में आपकी मदद कर सकता है। यदि आपको लगता है कि आप ऐसा नहीं कर सकते हैं, तो यह एक संकेत है कि जिस मार्ग पर आप हैं, वह अंततः दर्द, पीड़ा, दु: ख, और विलाप का कारण बन जाएगा।

+0

आप निर्भरता छोड़े जाने के लिए सही हैं। मुझे अपने build.gradle में पुस्तकालयों को बाहर करने की आवश्यकता थी। यह कामकाज केवल तभी काम करता था जब मैं अपनी परियोजना की स्थानीय निर्देशिका lib में डाउनलोड की गई सरल-एक्सएमएल लाइब्रेरी का उपयोग कर रहा था .... दुख की बात है – existenz31

+0

सबसे उपयोगी उत्तर! इससे मेरा काम बनता है। –

+0

0.12.2 को क्रमबद्ध करने के लिए अद्यतन करते समय बस इस समस्या को देखना शुरू कर दिया। यह सिफारिश एक आकर्षण की तरह काम करता है। –

5

mentionned पैदा करेगा मुझे एंड्रॉइड के साथ मेवेन का उपयोग कर एक ही त्रुटि मिली। मैंने निर्भरता को सही किया और सब कुछ ठीक से काम किया। यह सरल-एक्सएमएल पुस्तकालय के लिए मेरी निर्भरता है:

<dependency> 
<groupId>org.simpleframework</groupId> 
<artifactId>simple-xml</artifactId> 
<version>2.7.1</version> 
<scope>compile</scope> 
<exclusions> 
    <exclusion> 
     <artifactId>xpp3</artifactId> 
     <groupId>xpp3</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>stax-api</artifactId> 
     <groupId>stax</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>stax</artifactId> 
     <groupId>stax</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>spring-web</artifactId> 
     <groupId>org.springframework</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>commons-logging</artifactId> 
     <groupId>commons-logging</groupId> 
    </exclusion> 
</exclusions> 
</dependency> 
+1

आपने मेरा दिन बचाया! अति उत्कृष्ट! – tomurka

+0

मैवेन का उपयोग करते समय यह सही जवाब है। :-) – Vijay

+0

मुझे बहुत मदद करता है! धन्यवाद! –

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