एंड्रॉइड स्टूडियो और ग्रैडल में -source 1.7 कैसे सेट करें


177

एंड्रॉइड स्टूडियो में मेरे प्रोजेक्ट को संकलित करने की कोशिश करते समय मुझे निम्न त्रुटि हो रही है:

Gradle: error: diamond operator is not supported in -source 1.6

मैंने जो भी प्रोजेक्ट प्राथमिकताएं पाई हैं, उनमें मैंने 1.7 सेट किया है। इसके अलावा परियोजना एसडीके के तहत 1.7 एसडीके में प्रदर्शित पथ जावा की स्थापना के लिए सही रास्ता है।

यहां तक ​​कि जब मैं टर्मिनल में जावा-वर्जन चलाता हूं, तो यह बताता है कि मैं जावा 1.7 पर चल रहा हूं।

मैंने इसके लिए JAVA_HOME env वैरिएबल सेट करने का प्रयास किया है:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

त्रुटि दूर नहीं होती है। मैं त्रुटि को कैसे समाप्त करूं?


क्या आपने sourceCompatibilityअपने build.gradle में सेट किया है?
fge

जावा 7 सपोर्ट बिल्ड टूल्स 19 में जोड़ा गया था। कृपया, मेरे संपादित उत्तर की जाँच करें।
सेर्गेई पेचेनिस्की

जवाबों:


289

जावा 7 सपोर्ट को बिल्ड टूल्स 19 में जोड़ा गया था। अब आप डायमंड ऑपरेटर, मल्टी-कैच, ट्राई-विथ रिसोर्सेज, स्विच में तार आदि जैसी सुविधाओं का उपयोग कर सकते हैं build.gradle

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

ग्रैड 1.7+, एंड्रॉइड ग्रेडल प्लगइन 0.6। + आवश्यक हैं।

ध्यान दें, कि केवल संसाधनों के साथ प्रयास करने के लिए minSdkVersion19 की आवश्यकता होती है । अन्य विशेषताएं पिछले प्लेटफार्मों पर काम करती हैं।

एंड्रॉयड ग्रेडल प्लगइन उपयोगकर्ता गाइड से लिंक करें

स्रोत बनाम लक्ष्य कैसे भिन्न हैं, यह देखने के लिए लिंक


1
क्या यह कार्य केवल एंड्रॉइड स्टूडियो में होता है या क्या यह कार्य ADT के साथ ग्रहण में भी संभव है?
नैटिक्स

1
यह ग्रहण के लिए नवीनतम एडीटी के साथ संभव है। पूरा विवरण यहां देखें: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi

7
तार स्विच के लिए woohoo!
कोडर

10
ध्यान दें कि कोशिश के साथ संसाधनों का उपयोग केवल एपीआई 19 या उच्चतर के साथ किया जा सकता है।
एलेक्स लॉकवुड

73

हो सकता है कि ऊपर दिए गए ये उत्तर पुराने हों, लेकिन नए एंड्रॉइड स्टूडियो 1 के साथ, आप 1.7 (या 1.6 यदि पसंद करते हैं) पर चलने के लिए मॉड्यूल को देखने के लिए निम्नलिखित करते हैं। फ़ाइल पर क्लिक करें -> परियोजना संरचना। उस मॉड्यूल का चयन करें जिसे आप चलाना चाहते हैं और फिर "स्रोत संगतता" और "लक्ष्य संगतता" के तहत 1.7 का चयन करें। ओके पर क्लिक करें"।

एंड्रॉइड स्टूडियो 1 की परियोजना संरचना स्क्रीन


5
मुझे लगता है कि यह नवीनतम एंड्रॉइड-स्टूडियो के लिए सही उत्तर है। काश मैं यह भी एक सही जवाब दे सकता है ..
प्रवीण

1
यह अनिवार्य रूप से स्वीकृत उत्तर के समान है।
केरम

1
यह सिर्फ एक सुविधा सुविधा है, यह पहले से वर्णित "संकलन" कोड को ग्रेड फ़ाइल में सम्मिलित करेगा।
user3259330

मैं इसे 8 पर कैसे सेट कर सकता हूं?
नियॉन वेज

मैं 1.8 और 1.9 नहीं देख सकता हूं? भले ही इसके बारे में -> सहायता कहती है कि Android स्टूडियो 1.8 JRE का उपयोग कर रहा है।
श्रीकर रेड्डी

14

आप इसे नए Android स्टूडियो संस्करण (0.8.X) में बदल सकते हैं

FIle-> अन्य सेटिंग्स -> डिफ़ॉल्ट सेटिंग्स -> कंपाइलर (बाएं तीर पर क्लिक करके इसका विस्तार करें) -> जावा कंपाइलर -> आप यहां प्रोजेक्ट बायटेकोड संस्करण को बदल सकते हैं

यहां छवि विवरण दर्ज करें


8

नवीनतम एंड्रॉइड स्टूडियो 1.4।

फ़ाइल पर क्लिक करें-> परियोजना संरचना-> एसडीके स्थान-> जेडडीके स्थान।

आप मॉड्यूल (एसडीके स्थान के नीचे) पर जाकर अलग-अलग मॉड्यूल JDK संस्करण संगतता भी सेट कर सकते हैं, और तदनुसार स्रोत संगतता संपादित कर सकते हैं। (ध्यान दें, यह केवल Android मॉड्यूल पर लागू होता है)।


यह सेटिंग भ्रामक है, क्योंकि यह सभी परियोजनाओं को प्रभावित करता है, भले ही इसे "प्रोजेक्ट स्ट्रक्चर" नाम दिया गया हो।
ओलिवर हॉसलर

5

अपनी परियोजना पर राइट क्लिक करें> मॉड्यूल सेटिंग खोलें> "प्रोजेक्ट सेटिंग" अनुभाग में "प्रोजेक्ट" चुनें

प्रोजेक्ट SDK को नवीनतम (API 21 हो सकता है) और प्रोजेक्ट भाषा स्तर को 7+ में बदलें


4

वर्तमान में, एंड्रॉइड जावा 7 का समर्थन नहीं करता है, केवल जावा 6. जावा 7 में नई विशेषताएं जैसे कि डायमंड सिंटैक्स वर्तमान में समर्थित नहीं हैं। इसका समर्थन करने के लिए स्रोत ढूंढना आसान नहीं है, लेकिन मैं पा सकता हूँ कि दलविक इंजन अपाचे हार्मनी के एक उपसमुच्चय पर बनाया गया है, जिसने केवल जावा को संस्करण 6 तक ही समर्थित किया है। और यदि आप एंड्रॉइड ऐप विकसित करने के लिए सिस्टम की आवश्यकताओं की जांच करते हैं, तो यह भी बताता है। कम से कम JDK 6 की आवश्यकता है (हालांकि यह निश्चित रूप से वास्तविक प्रमाण नहीं है, सिर्फ एक संकेत है)। और यह बहुत कुछ वैसा ही कहता है जैसा मेरे पास है। अगर मुझे कुछ अधिक वित्तीय लगता है, तो मैं इसे जोड़ूंगा।

संपादित करें: ऐसा लगता है कि जावा 7 समर्थन जोड़ा गया है क्योंकि मैंने मूल रूप से यह उत्तर लिखा था; Sergii Pechenizkyi द्वारा उत्तर की जाँच करें ।


2
यहाँ, समस्या को दूर करने के बारे में एक लिंक के साथ एक समान प्रश्न: stackoverflow.com/questions/14487682/…
blalasaadri

2

हमेशा बनाने के लिए नवीनतम एसडीके संस्करण का उपयोग करें:

compileSdkVersion 23

यह रनटाइम व्यवहार को प्रभावित नहीं करता है , लेकिन आपको नवीनतम प्रोग्रामिंग सुविधाएँ प्रदान करता है।


2

अपने ग्रेडेल में जाएं और sourceCompatibility की तलाश करें और इसे 1.6 से 7 में बदल दें । वह मेरे लिए कम से कम काम आए।

आप अपनी मॉड्यूल सेटिंग में भी जा सकते हैं और स्रोत / लक्ष्य संगतता को 1.7 पर सेट कर सकते हैं

मॉड्यूल सेटिंग्स विंडो

यह आपके ग्रेडल में निम्नलिखित कोड का उत्पादन करेगा:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.