मैं एंड्रॉइड स्टूडियो में अपने एंड्रॉइड प्रोजेक्ट में 'कॉमन्स-वैलिडेटर' को जोड़ने का प्रयास कर रहा हूं जो कि ग्रेडेल पर आधारित है। मैं अपनी जरूरतों के लिए UrlValidator का उपयोग करता हूं।

तो मैं एक app मॉड्यूल के build.gradle में एक निर्भरता जोड़:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'commons-validator:commons-validator:1.4.1' // this one
}

और अनुप्रयोग टैग में AndroidManifest के लिए पुस्तकालय का उपयोग करता है:

 <uses-library android:name="org.apache.commons.validator.routines.UrlValidator"
        android:required="true"/>

लेकिन इसे जोड़ने के बाद मेरा प्रोजेक्ट रन करने में विफल है।

त्रुटि: कार्य के लिए निष्पादन विफल रहा ': app: dexDebug'। com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: प्रक्रिया 'कमांड' /Library/Java/JavaVirtualMachines/jdk1.0.0_40.jdk/Contents/Home/bin/java '' समाप्त गैर-शून्य निकास मान 2 के साथ

और मुझे भी मिलता है

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

4 बार: डिबग के लिए दो और रिलीज के लिए दो।

1
While True 20 नवम्बर 2015, 18:35

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि समस्या सकरात्मक निर्भरता थी। कुछ SO के सूत्र पर शोध करने के बाद मैंने अपने कंसोल में लिखा:

cd app/ #to enter app module folder
../gradlew dependencies

जिसने मुझे निम्नलिखित आउटपुट दिए:

_debugCompile - ## Internal use, do not manually configure ##
+--- commons-validator:commons-validator:1.4.1
|    +--- commons-beanutils:commons-beanutils:1.8.3
|    |    \--- commons-logging:commons-logging:1.1.1 -> 1.2
|    +--- commons-digester:commons-digester:1.8.1
|    +--- commons-logging:commons-logging:1.2
|    \--- commons-collections:commons-collections:3.2.1

इसलिए मैंने इसे build.gradle में जोड़ा:

compile('commons-validator:commons-validator:1.4.1'){
        exclude group: 'commons-logging'
        exclude group: 'commons-collections'
        exclude group: 'commons-digester'
        exclude group: 'commons-beanutils'
}

इसके अलावा कुछ लोगों ने multiDexEnabled true को defaultConfig भाग में जोड़ने के लिए कहा, लेकिन जैसा कि मैंने कोशिश की कि यह मेरे लिए इसके बिना काम करता है।

जैसा कि @Brucelet ने कहा है - <uses-library> टैग को हटा दिया गया।

यह सही ढंग से चलता है और काम करता है, हालांकि ग्रेडल आउटपुट कुछ एजीपीबीआई संदेशों को बहुत कुछ देता है:

AGPBI: {"kind": "simple", "text": "चेतावनी: एक आंतरिक आंतरिक वर्ग के लिए आंतरिक गुण की उपेक्षा", "स्रोत": [{}]} AGPBI: {"kind": "simple", "text": "(org.apache.commons.validator.CreditCardValidator $ 1) जो doesn \ u0027t एक", "स्रोत": [{}]} के साथ आते हैं। AGPBI: {"kind": "simple", "text": "संबद्ध EnclosingMethod विशेषता। यह वर्ग संभवतः", "स्रोत": [{}] द्वारा निर्मित था। AGPBI: {"kind": "simple", "text": "कंपाइलर जो आधुनिक .assass फ़ाइल प्रारूप को लक्षित नहीं करता है। अनुशंसित", "स्रोत": [{}] AGPBI: {"kind": "simple", "text": "समाधान है स्रोत से कक्षा को फिर से जोड़ना, एक अप-टू-डेट कंपाइलर का उपयोग करके", "source": [{}]} AGPBI: {"kind": "simple", "text": "और किसी भी \" को निर्दिष्ट किए बिना - लक्ष्य के "प्रकार के विकल्प। अनदेखी का परिणाम", "source": [{}]} AGPBI: {"kind": "simple", "text": "यह चेतावनी है कि इस वर्ग पर चिंतनशील संचालन गलत होगा", "स्रोत": [{}]} AGPBI: {"kind": "simple", "text": "इंगित करें कि यह नहीं है एक आंतरिक वर्ग।", "स्रोत": [{}] AGPBI: {"kind": "simple", "text": "चेतावनी: एक आंतरिक भीतरी वर्ग के लिए आंतरिक गुण की अनदेखी", "स्रोत": [{}]} AGPBI: {"kind": "simple", "text": "(org.apache.commons.validator.ValidatorResources $ 1) जो doesn \ u0027t", "स्रोतों": {{}]} के साथ आते हैं AGPBI: {"kind": "simple", "text": "संबद्ध EnclosingMethod विशेषता। यह वर्ग संभवतः", "स्रोत": [{}] द्वारा निर्मित था। AGPBI: {"kind": "simple", "text": "कंपाइलर जो आधुनिक .assass फ़ाइल प्रारूप को लक्षित नहीं करता है। अनुशंसित", "स्रोत": [{}] AGPBI: {"kind": "simple", "text": "समाधान है स्रोत से कक्षा को फिर से जोड़ना, एक अप-टू-डेट कंपाइलर का उपयोग करके", "source": [{}]} AGPBI: {"kind": "simple", "text": "और किसी भी \" को निर्दिष्ट किए बिना - लक्ष्य के "प्रकार के विकल्प। अनदेखी का परिणाम", "source": [{}]} AGPBI: {"kind": "simple", "text": "यह चेतावनी है कि इस वर्ग पर चिंतनशील संचालन गलत होगा", "स्रोत": [{}]} AGPBI: {"kind": "simple", "text": "इंगित करें कि यह नहीं है एक आंतरिक वर्ग।", "स्रोत": [{}]Can't load full resultsTry againRetrying...Retrying...

2
While True 20 नवम्बर 2015, 17:10

<uses-library> टैग को हटाने का प्रयास करें। उपयोगकर्ता को आपके एप्लिकेशन इंस्टॉल करने से पहले एक निश्चित बाहरी लाइब्रेरी स्थापित करने की आवश्यकता होती है। जब आप अपने कोड के भीतर लाइब्रेरी को आंतरिक रूप से शामिल करना चाहते हैं, तो निर्भरता निर्भरता पर्याप्त होनी चाहिए।

0
RussHWolf 20 नवम्बर 2015, 16:54