web-dev-qa-db-fra.com

Android Jack: Lambda from the fichier jar nécessite la compilation de ses interfaces sur le chemin d'accès aux classes. Les interfaces inconnues sont Java.util.function.Consumer

Obtenir ceci sur Android studio 2.2.

Quelqu'un at-il une solution de contournement?

Mon fichier de construction d'application est:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig {
        applicationId "acme.cb2"
        minSdkVersion 18
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        jackOptions {
            enabled 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(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:appcompat-v7:24.1.1'
    compile 'com.Android.support:support-v4:24.1.1'
}

edit: modifie le fichier de compilation main pour inclure la réponse de https://stackoverflow.com/users/5753091/mohammadreza-khalifeh - mais cela n'a pas aidé.

import Java.text.SimpleDateFormat

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.0'
        classpath 'org.hidetake:gradle-ssh-plugin:2.4.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xbootclasspath/a:" + System.properties.get("Java.home") + "/lib/rt.jar"
        }
    }
}

edit: ajouter:

options.compilerArgs.each { println 'option: '+it}

imprime:

option: -Xbootclasspath/a:C:\Program Files\Java\jdk1.8.0_92\jre/lib/rt.jar

Il semble que l'espace dans le chemin pourrait causer un problème?

edit: essayant:

options.compilerArgs << "\""+"-Xbootclasspath/a:" + System.properties.get("Java.home") + "/lib/rt.jar"+"\""

ne fonctionne pas non plus.

17
Ray Tayek

J'ai eu ce problème après avoir ajouté la bibliothèque Guava à mes dépendances.

La solution consistait à rétrograder la version de lib de com.google.guava:guava:21.0 à com.google.guava:guava:20.0.

En outre, j'utilise classpath'.Android.tools.build: gradle: 2.5.0-alpha-preview-01`

EDIT: Comme vous n'utilisez pas cette bibliothèque, essayez de changer:

  • dans le projet build.gradle
    • classpath de classpath 'com.Android.tools.build:gradle:2.2.0' à com.Android.tools.build:gradle:2.5.0-alpha-preview-01
  • dans l'application build.gradle 

    • de compileSdkVersion 24 à 25
    • de buildToolsVersion "24.0.2" à 25.0.2
  • dans gradle-wrapper.properties

    • changez la version en distributionUrl=https://services.gradle.org/distributions-snapshots/gradle-3.5-20170213202653+0000-all.Zip  
1
piotrek1543

Essayer

classpath 'com.Android.tools.build:gradle:2.3.+'

et

minSdkVersion 25
0
Bartosz Małkowski

ajoutez ceci dans votre build.gradle:

allprojects {
    repositories {
        jcenter()
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xbootclasspath/a:" + System.properties.get("Java.home") + "/lib/rt.jar"
        }
    }
}
0

lors de la mise à niveau du studio Android, les éléments suivants semblent fonctionner (mais c'est vraiment lent maintenant):

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "acme.cb2"
        minSdkVersion 22
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        jackOptions {
            enabled true
       }
    }
    dexOptions {
        //javaMaxHeapSize "4G"
    }
    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(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:appcompat-v7:25.2.0'
    compile 'com.Android.support:support-v4:25.2.0'
}
0
Ray Tayek