2017-05-19 10 views
7

को जैक से विस्थापित मैं और लैम्ब्डा एक्सप्रेशन का उपयोग करने की कोशिश कर रहा हूँ और मेरे Android project.I'm में धाराओं धाराओं के लिए streamsupport लाइब्रेरी का उपयोग कर, देशी लैम्ब्डा भाव के लिए जावा 8।निवासी जावा 8

Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8. 

और उसके बाद मैं इस

jackOptions { 
    enabled true 
} 
कहा: जावा 8 सुविधाओं का उपयोग करने मैं अपने Gradle में

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
} 

इस कोड को जोड़ने की जरूरत है, लेकिन संकलक इस त्रुटि से पता चलता सक्षम होने के लिए

और संकलक द्वारा कोई त्रुटि थी, लेकिन क्रम पर एक ही त्रुटि दिखा रहता है। यह मेरा Gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 

    defaultConfig { 
     applicationId "home.gio.calorieplanner" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     multiDexEnabled true 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
    { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:recyclerview-v7:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.android.support:support-v4:25.3.1' 
    compile 'org.greenrobot:eventbus:3.0.0' 
    compile 'com.android.support:design:25.3.1' 
    compile 'com.google.firebase:firebase-crash:10.0.1' 
    compile 'com.google.code.gson:gson:2.8.0' 
    compile 'com.google.firebase:firebase-database:10.2.4' 
    compile 'com.google.firebase:firebase-core:10.2.4' 
    compile 'com.jakewharton:butterknife:8.5.1' 
    compile 'com.firebaseui:firebase-ui-database:1.1.0' 
    compile 'org.jsoup:jsoup:1.10.2' 
    compile 'com.android.support:percent:25.3.1' 
    compile 'com.thoughtbot:expandablecheckrecyclerview:1.4' 
    testCompile 'junit:junit:4.12' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' 
    compile 'net.sourceforge.streamsupport:streamsupport:1.5.4' 
} 



apply plugin: 'com.google.gms.google-services' 

है और इस प्रक्रिया में जहां मैं लैम्ब्डा भाव उपयोग कर रहा हूँ और धाराओं है।

public String identifySubMenu(String group, int index) { 
    List<Product> prod = StreamSupport 
      .stream(Main.outRetailChainList.get(Constants.GOODWILL).getProducts()) 
      .filter(item -> item.getCategory().equals(group)) 
      .collect(Collectors.toList()); 
    return prod.get(index).getSubMenu(); 
} 

तो मेरा सवाल यह है कि मैं इस त्रुटि को कैसे ठीक कर सकता हूं।

+1

स्टैकट्रेस है कि आप क्रम में पाने दिखाने कृपया के लिए बहुत भारी है। जैक required' है –

+0

@Stefan सवाल ... 'त्रुटि पढ़ें। मेरे लिए 'त्रुटि: जैक आवश्यक है' एक संकलन-समय संदेश की तरह दिखता है। क्या आप वाकई रनटाइम त्रुटि संदेश हैं? –

+0

@ cricket_007 ज़रूर, मुझे लगता है कि पढ़ा है: –

उत्तर

4

आप कई विकल्प हैं:

1 - करने के लिए 3.0 इस संस्करण अब और जैक और लैम्ब्डा की जरूरत नहीं है अब सही तरीके से नियंत्रित किया जाता है एंड्रॉयड स्टूडियो के संस्करण का नवीनीकरण, लेकिन इस संस्करण कैनरी चैनल में है, कि उनकी है "बीटा" एक।

2 - अब लैम्ब्डा का उपयोग करें और इंतजार 3.0 जैक पूरी तरह से सही ढंग से लैम्ब्डा संभाल नहीं है के रूप में जारी होने की नहीं है। आपको इस पर एक पूरी तरह से समझाया गया पृष्ठ मिला: https://developer.android.com/guide/platform/j8-jack.html

3 - retrolambda नामक प्लगइन का उपयोग करें, लेकिन यह आपके संकलन समय को बढ़ाता है। मेरे मन के लिए, इस विकल्प का रास्ता सिर्फ लैम्ब्डा

+0

रेट्रोलंबडा टूल 3.0 बनाने से पहले अच्छी तरह से काम करता है, और यह 3.0+ – EpicPandaForce

+0

@EpicPandaForce के साथ काम नहीं करेगा क्या आप कोई पॉइंटर्स (संकेत, लिंक। ..) एएस 3.0 के साथ रेट्रोलंबडा समस्याएं क्या हैं? –

+0

@StefanZobel वे कहीं लिखते हैं कि बिल्ड टूल्स बॉक्स से बाहर लैम्ब्डा का समर्थन करते हैं, लेकिन यह एंड्रॉइड-एपीटी प्लगइन और न ही रेट्रोलंबडा के साथ काम नहीं करता है। – EpicPandaForce