2014-05-23 10 views
8

मैं अपने Android आवेदन में Gradle उपयोग कर रहा हूँ एक मैं JScience पुस्तकालय निर्भरता उपयोग करना चाहते हैं कैसे बहिष्कृत करें। मैं पुस्तकालय इस तरह से जोड़ लिया है:Gradle: JScience जार निर्भरता से javax.realtime पैकेज (एकाधिक डेक्स को परिभाषित)

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 

    compile 'org.jscience:jscience:4.3.1' 

    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

लेकिन संकलन समय में मैं त्रुटि मिलती है:

UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.DexException: Multiple dex files define Ljavax/realtime/MemoryArea; 
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 
    at com.android.dx.command.dexer.Main.run(Main.java:230) 
    at com.android.dx.command.dexer.Main.main(Main.java:199) 
    at com.android.dx.command.Main.main(Main.java:103) 

इसका कारण यह है परियोजना में javax.realtime संकुल डुप्लिकेट करने के कारण होता है, एक JDK का एक हिस्सा है, और दूसरा एक जेएसआईएस लाइब्रेरी में है। मैं Gradle में इस तरह Jscience पुस्तकालय से इस पैकेज को दूर करने की कोशिश की है:

sourceSets { 
    main { 
     java { 
      exclude 'javax/realtime/**' 
     } 
    } 
} 

configurations { 
    all*.exclude group: 'javax.realtime' 
} 

लेकिन वह मदद नहीं की। तो, वह पैकेज निर्भरता में अभी भी मौजूद है। enter image description here

क्या कोई तरीका है कि मैं संकलन समय पर जार से पैकेज को कैसे बाहर निकाल सकता हूं?

+2

" एक जावा का एक हिस्सा है। " यदि आप एक JDK के वर्ग पुस्तकालय का उपयोग नहीं कर रहे हैं के रूप में जब आप किसी Android ऐप्लिकेशन संकलन कर रहे हैं तथ्य यह है कि एक JDK के वर्ग पुस्तकालय 'javax.realtime' है, अर्थहीन है। – CommonsWare

+0

उत्तर के लिए धन्यवाद, आप 100% सही हैं, मेरी गलती। समस्या, javolution (जो JScience पुस्तकालय से आता है) के लिए निर्भरता में था, क्योंकि यह 'शामिल javax.realtime' पैकेज। –

उत्तर

16

किसी की आवश्यकता होने पर, समस्या JavolutionJScience लाइब्रेरी से निर्भरता में थी। वे दोनों javax.runtime पैकेज hava करते हैं। Javolution को छोड़कर मेरे लिए समस्या ठीक कर दी गई है। वहाँ एंड्रॉयड में कोई `javax.realtime` है -

compile ('org.jscience:jscience:4.3.1') { 
    exclude group: 'org.javolution', module: 'javolution' 
} 
+0

इसके लिए धन्यवाद। मैं हमेशा की तरह मार्ग प्रति अतिव्यापी निर्भरता नहीं पा सके 'Gradle -q एप्लिकेशन: dependencies' -> क्या आदेश आप अगर मैं पूछ सकते हैं आवेदन में खुदाई करने के लिए उपयोग किया था? – AllDayAmazing

+0

मैं पहले से ही याद नहीं है लेकिन मुझे लगता है कि हो सकता है 'IntelliJ विचार –

+0

की Gradle dependencies' आदेश या निर्भरता पेड़ उपकरण किसी तरह इस के लिए धन्यवाद। इसने मेरे मुद्दे को हल किया "java.exe गैर-शून्य निकास मान 2 के साथ समाप्त हुआ" .. – Ralphilius

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