【问题标题】:Gradle build fails: Unable to find method 'org.gradle.api.tasks.testing.Test.getTestClassesDirs()Lorg/gradle/api/file/FileCollection;'Gradle 构建失败:找不到方法 'org.gradle.api.tasks.testing.Test.getTestClassesDirs()Lorg/gradle/api/file/FileCollection;'
【发布时间】:2018-05-01 19:49:14
【问题描述】:

当我尝试从 github 编译导入的 project 时,我的 gradle 构建总是失败并出现以下异常。

Unable to find method 'org.gradle.api.tasks.testing.Test.getTestClassesDirs()Lorg/gradle/api/file/FileCollection;'
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)</li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)</li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes

我按照给出的说明进行操作,但没有成功。此外,我无法通过在互联网上搜索得到有关该错误的更多信息

app\build.gradle:

   apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "iammert.com.androidarchitecture"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    /*androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })*/
    //  testCompile 'junit:junit:4.12'

    //support lib
    implementation rootProject.ext.supportLibAppCompat
    implementation rootProject.ext.supportLibDesign

    implementation rootProject.ext.archRuntime
    implementation rootProject.ext.archExtension
    annotationProcessor rootProject.ext.archCompiler

    implementation rootProject.ext.roomRuntime
    annotationProcessor rootProject.ext.roomCompiler

    implementation rootProject.ext.okhttp
    implementation rootProject.ext.retrofit
    implementation rootProject.ext.gsonConverter

    //dagger
    annotationProcessor rootProject.ext.daggerCompiler
    implementation rootProject.ext.dagger
    implementation rootProject.ext.daggerAndroid
    implementation rootProject.ext.daggerAndroidSupport
    annotationProcessor rootProject.ext.daggerAndroidProcessor

    //ui
    implementation rootProject.ext.picasso

}

\build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha3'

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

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext {
    supportLibVersion = '25.3.1'
    daggerVersion = '2.11'
    retrofitVersion = '2.1.0'
    gsonConverterVersion = '2.1.0'
    okhttpVersion = '3.8.0'
    picassoVersion = '2.5.2'
    archVersion = '1.0.0-alpha1'

    supportLibAppCompat = "com.android.support:appcompat-v7:$supportLibVersion"
    supportLibDesign = "com.android.support:design:$supportLibVersion"
    archRuntime = "android.arch.lifecycle:runtime:$archVersion"
    archExtension = "android.arch.lifecycle:extensions:$archVersion"
    archCompiler = "android.arch.lifecycle:compiler:$archVersion"
    roomRuntime = "android.arch.persistence.room:runtime:$archVersion"
    roomCompiler = "android.arch.persistence.room:compiler:$archVersion"
    dagger = "com.google.dagger:dagger:$daggerVersion"
    daggerCompiler = "com.google.dagger:dagger-compiler:$daggerVersion"
    daggerAndroid = "com.google.dagger:dagger-android:$daggerVersion"
    daggerAndroidSupport = "com.google.dagger:dagger-android-support:$daggerVersion"
    daggerAndroidProcessor = "com.google.dagger:dagger-android-processor:$daggerVersion"
    retrofit = "com.squareup.retrofit2:retrofit:$retrofitVersion"
    gsonConverter = "com.squareup.retrofit2:converter-gson:$gsonConverterVersion"
    okhttp = "com.squareup.okhttp3:okhttp:$okhttpVersion"
    picasso = "com.squareup.picasso:picasso:$picassoVersion"
}

gradle\gradle-wrapper.properties:

#Thu May 18 17:31:31 EEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zip

有人知道为什么会出现这个错误吗?

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    我不得不将gradle-wrapper.properties 中的distributionUrl 更改为distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip 以使构建再次运行。这似乎是一个类似的问题Gradle sync failed: Unable to find method

    【讨论】:

    • 我遇到了同样的问题。没有一个答案对我有用。终于降级到以前的版本,它的工作!我猜这是与最新 Gradle 版本相关的错误。
    • 它有什么作用?
    • 是的,这对我有用,但还有一个提示:如果您还有其他要构建的 Android 项目,请查看它们的 gradle-wrapper.properties,然后使用相同的 distributionUrl修复您损坏的项目。
    • 对我来说从 7.1 降级到 6.9 有效。我没有解释。
    【解决方案2】:

    我通过添加 classpath 'com.android.tools.build:gradle:3.2.1' 修复了与此错误相同的问题 在 build.gradle 项目中

    buildscript {
    
        repositories {
            maven { url 'https://maven.google.com' }
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.1'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果您在删除 .gradle 和 .idea 文件后遇到此错误,则该错误正在发生,因为 Gradle 文件不适用于此项目,并且 Android Studio 无法下载相同版本的Gradle 依赖项。您可以切换到较低版本的 Gradle choose from here,然后转到 gradle-wrapper-properties 文件并更改版本,在我的情况下,我将其从 distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 更改为 distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip。下载旧版本的 Gradle 依赖项后,会出现一个 Gradle 更新对话框,您可以通过该对话框获取最新版本,在本例中为 5.1.1

      【讨论】:

      • 目前使用的版本是4.10.1:distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
      【解决方案4】:

      错误:找不到方法''java.lang.String org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()''

      我在 IntelliJ 2019.3.5 中使用 spring-boot 版本 2.5.4 时遇到了同样的问题。

      调查结果:

      罪魁祸首是什么:可能是 gradle 或可能是 intelliJ。

      什么是修复: 默认情况下 gradle-wrapper.properties 有以下行 distributionUrl=https://services.gradle.org/distributions/gradle-7.1.1-bin.zip

      我将此行替换为以下行: distributionUrl=https://services.gradle.org/distributions/gradle-6.8.3-bin.zip

      它开始工作了。

      【讨论】:

        【解决方案5】:

        在文件SampleProject/gradle/wrapper/gradle-wrapper.properties

        改变

        distributionUrl=https://services.gradle.org/distributions/gradle-5.1.1-all.zip
        

        distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip
        

        【讨论】:

        • 您应该描述此答案针对不同的版本。
        【解决方案6】:

        更改 gradle.wrapper.properties 你的 distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all.zip 的值更改为这个,android studio 会自动更新你的 gradle,应该没问题

        【讨论】:

          【解决方案7】:

          当您从外部资源导入项目时,将生成一些文件,因为它包含特定于您的本地配置的信息,其中之一是 gradle-wrapper.properties,降级到较低版本并重建项目,错误应该消失

          distributionUrl=https://services.gradle.org/distributions/gradle-5.1.1-all.zip
          

          distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip
          

          【讨论】:

            【解决方案8】:

            您似乎未能解决您的 testInstrumentation。你在使用 facebook.screenshot api 吗?如果是这样,您需要包含它。

            否则,只需注释掉 testInstrument 部分,如果您不关心它们,看看是否可以暂时不使用测试。否则你需要修复它的依赖使用。

            *注释掉 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

            这会导致在您的清单中创建一行,并且可能无法正确解析。

            【讨论】:

              【解决方案9】:

              为android studio路径“文件夹project/gradle/wrapper/gradle-wrapper.properties”文件更改URL值distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all。 zip 来自http://services.gradle.org/distributions/ 的适当(上一个)版本

              【讨论】:

                【解决方案10】:

                我遇到了同样的问题 仔细检查您的distributionUrl 应该支持您的类路径,否则您会收到错误

                Build.gradle (Android)

                 classpath 'com.android.tools.build:gradle:3.6.1'
                 classpath 'com.google.gms:google-services:4.3.3'
                

                Gradle-wrapper.properties

                distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
                

                【讨论】:

                  【解决方案11】:

                  在 AndroidStudio 3.5 中使用以下行可以正常工作

                  distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
                  

                  【讨论】:

                    猜你喜欢
                    • 2023-03-25
                    • 2016-09-26
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-10-05
                    • 2015-01-22
                    • 1970-01-01
                    • 2020-09-16
                    相关资源
                    最近更新 更多