错误:(23,17)无法解决:junit:junit:4.12


133

为什么每次我在Android Studio中创建一个新项目时,总会出现以下问题:

错误:(23,17)无法解决:junit:junit:4.12?

当我删除testCompile 'junit:junit:4.12'依赖项时,这不再是问题。

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.okedroid.myapplication"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    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:23.0.1'
}

看起来您的存储库中没有该jar。
詹斯(Jens)

如何处理?我已经安装了JDK 7,并且还在环境变量中添加了路径
fathurzero 2015年

您将哪个存储库用于gradle。
詹斯(Jens)2015年

1
看起来像罐子存在jcenter.bintray.com/junit/junit/4.12
Jens

Answers:


124

我有同样的问题。通过在build.gradle文件中添加缺少存储库的URL来解决:

android {
    [...]
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    [...]
}

而已。


那绝对为我解决了这个问题,所以至少我现在可以进行gradle-sync了
革命性的

16
根本原因是什么?
拉乌普,2015年

这确实解决了问题,但这是什么maven
锡胡

1
应该在上面添加它buildTypes,否则错误buildTypes不能应用于groovy.lang。将发生关闭
锡胡

jcenter()呢 是否有必要jcenter()从存储库中删除?
侯赛因·阿卡贾尼

34

只需从build.gradle文件中删除“ testCompile'junit:junit:4.12'”即可:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'//remove this line and sync again... worked for me

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'}) //if available, also delete these two lines

compile 'com.android.support:appcompat-v7:23.0.1'
 }

为我工作,我很高兴!:)

请记住,这不是该问题的实际答案。我提到这一点是因为删除上面的行后它可以工作。


24

转到文件->项目结构。将打开以下窗口:

在此处输入图片说明

从那里:

  1. 删除junit库(选择junit并按下面的“-”按钮),然后
  2. 再次添加它(选择下面的“ +”按钮,选择“库深度”,搜索“ junit”,然后按OK)。按确定以应用更改。大约30秒后,gradle同步应该可以正常工作。

希望它也对您有用:D


3
我尝试了这个,但是当我去添加junit的时候就不在了……wtf
Brew Dain

要手动将junit添加到项目中,请从左侧打开“ build.gradle(模块:应用程序)”文件。添加以下行:testCompile'junit:junit:4.12'在文件末尾的依赖关系块之间的任何位置,最后通过转到工具> ANDROID>与进度文件同步项目来同步项目
Hasaan Ali

没有为我工作。再次添加junit4.12之后,它给出了与OP相同的错误。
user13107 '17

15

它无法获取junit库。

repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }

在build.gradle文件中的android块内添加以上行后,它解决了问题。这可能是因为您的Android Studio没有junit库。


15

在build.gradle文件中添加存储库

repositories {
    maven { url 'http://repo1.maven.org/maven2' }
}

13

您的gradle可能不完整,建议您添加以下内容

android{
    repositories {
    maven { url 'http://repo1.maven.org/maven2' }
}

但在某些情况下不起作用,您可以从gradle中的依赖项中完全删除它。

我认为如果您使用用户文件夹中的删除gradle文件夹条件重新安装android studio就可以了 .gradle


8

这是我为解决相同问题所做的工作。我在防火墙后面,这与我想的一样。所以我试着删除

testCompile 'junit:junit:4.12' line 

但这对我没有用。我尝试添加以下代码行:

repositories {
    maven { url 'http://repo1.maven.org/maven2' }
}

即使那样对我也不起作用。

我尝试从“模块设置”下的库依赖项中删除(-)和读取(+)Junit4.12。但这仍然对我不起作用。

尝试过多次同步和重建项目。仍然没有为我工作。

最后,我要做的是从mvnrepository网站手动下载Junit4.12.jar文件。我将此jar文件放在libs文件夹内Project文件夹下的Androids Workspace中。然后,在“模块路径”窗口下,转到“模块设置”>“依赖项”选项卡>(+)>“文件依赖项”>,展开“ libs”文件夹,您将在其中找到复制的Jar文件。选择文件,然后单击“确定”。现在从依赖项列表中删除junit4.12的先前版本。

您应该"libs\junit-4.12.jar"在“依赖关系”列表中有一个条目。现在单击“确定”。

现在Gradle将重建项目,您应该一切顺利。

希望这可以帮助!


我只是使缓存无效,然后重新启动了Android Studio。
Mohammedsalim Shivani

6

我将尽一切努力,但是唯一可以帮助我解决问题的方法是删除该行

testCompile 'junit:junit:4.12'

从应用等级。


5

这是因为HTTPS被代理阻止。尝试从默认的jcenter(使用HTTPS)更改为HTTP。

之前

repositories {
     jcenter()
}

repositories {
    jcenter {
        //Default one is HTTPS
        url "http://jcenter.bintray.com/"
    }
}

对所有项目重复上述步骤。

allprojects {
  repositories {
    jcenter {
        url "http://jcenter.bintray.com/"
    }
  }
}

代理,HTTP通信有效且禁止HTTPS通信时不起作用。
Diti

嗯..这就是我在帖子中试图解释的内容。默认情况下,它使用被阻止的HTTPS。见之前和之后
jafarmlp

4

创建新项目后,我收到此错误。在build.gradle文件中,我有以下内容:

jcenter()

我将其更改为以下内容,错误消失了:

jcenter {
    url "http://jcenter.bintray.com/"
}

我认为这是因为我在防火墙后面并指定了url,因此将其从https更改为http


1
非常感谢 。此修复程序对我有所帮助
Android_programmer_office

4

可能您落后于代理。发生在我身上的是使用我的移动网络共享(无代理)重建项目,错误消失了。返回原始连接(使用代理),并进行重建而没有错误。


我还需要为gradle指定一个代理,但是我不想将我的登录详细信息添加到每个项目中。答案是将gradle.properties添加到我的用户目录。此答案中的更多信息-stackoverflow.com/a/26524019/542629
walkingTarget

4

您在使用代理吗?如果是这样,则问题可能出在文件中缺少https的网络配置gradle.properties

AndroidStudio自动将您的默认代理设置保存到gradle.properties您项目中的文件中,但仅用于http并忘记了https。

因此,基本上,您的gradle.properties文件需要同时包含http和https配置:

systemProp.http.proxyPassword=xxx
systemProp.http.proxyHost=xxx
systemProp.http.nonProxyHosts=xxx
systemProp.http.proxyUser=xxx
systemProp.http.proxyPort=xxx

systemProp.https.proxyPassword=xxx
systemProp.https.proxyHost=xxx
systemProp.https.nonProxyHosts=xxx
systemProp.https.proxyUser=xxx
systemProp.https.proxyPort=xxx

3

通常,在您创建项目时,无论何时更新SDK,此问题都会出现。Gradle构建失败。如果将Mavenjcenter存储库添加到build.gradle(Module:app),您的问题将得到解决。

repositories {
    maven { url 'http://repo1.maven.org/maven2' }
    jcenter { url "http://jcenter.bintray.com/" }
}

这是您必须添加的两行

apply plugin: 'com.android.application' 

这是添加这两行之后的代码的样子

apply plugin: 'com.android.application'

 repositories {
        maven { url 'http://repo1.maven.org/maven2' }
        jcenter { url "http://jcenter.bintray.com/" }
    }

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.okedroid.myapplication"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

3

该错误是由于缺少jar文件引起的。我的简单解决方案是将所有无法解析的文件复制到C:\ Program Files \ Android \ Android Studio \ gradle \ m2repository ...(您的文件路径可能不同)。我遇到了大约6个无法解决的依赖关系,junit是其中之一,其他依赖于com和org和javax。由于我位于防火墙后面,因此即使我添加了存储库的代码,Android Studio似乎也无法访问它。我去了Maven仓库并下载了所有无法解析的文件。问题已解决,Gradle同步无错误。但是我是只有1天经验的经过认证的新手,所以如果这是正确的方法,我就不会这样做。

错误示例:无法解析com:squareup:javawriter:2.1.1

步骤1:我创建了路径C:\ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

步骤2:我从maven存储库下载了所有jar文件:http : //repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

步骤3:我从该目录手动下载了所有.jar文件

步骤4:我将它们复制到C:\ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

我对所有无法解析的文件(包括junit)重复了此操作。

对于junit,这是我创建的目录:C:\ Program Files \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12,然后将junit-4.12.jar复制到该目录中,并且junit错误消失了。


3
  1. 确保您没有代理!
  2. 如果您将Android Strudio配置为可与代理一起使用,请确保在Android Studio首选项下禁用该选项
  3. 转到Android Studio中Android视图下的gradle.properties并删除所有代理配置
  4. 立即同步您的gradle
  5. 享受编码!

2

像这样更改您的build.gradle,对我来说工作正常:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    defaultConfig {
        applicationId "YOUR PACKAGE NAME"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    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:23.0.0'
}

添加

    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }

android



2

我的Android Studio安装完全脱机。为了解决这些问题,我使用了过程监视器。结果表明“ Android Studio \ gradle \ m2repository”中缺少一些文件。我已经从下载了所有文件

  1. http://repo1.maven.org/maven2/junit/junit/4.12/
  2. http://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/
  3. repo1.maven.org/maven2/org/hamcrest/hamcrest-parent/1.3/(我只能发布两个链接... ;-))

并将这些文件复制到“ Android Studio \ gradle \ m2repository”中。您必须在“ m2repository”下创建结构,因为它在“ maven2”下。也许还有更多的丢失文件,但是目前至少Gradle构建完成而没有错误。


在所有这些答案中,这是唯一实际解决我的问题的方法(我全部对它们进行了测试!)。当然,对我来说,它需要添加更多的存储库,但是解决方案是相同的。唯一不起作用的是“ javax.annotation-api / 1.2”,经过几次测试,我不得不将其从依赖项中删除。感谢@Tasko
爵士17年

2

我有同样的问题。

  • 1个选项:下载junit 4.12.jar并将其复制到您的lib文件夹中,然后重新启动android studio。好处您不必创建任何新项目

  • 2个选项:创建一个具有Internet连接的新项目,并在新创建的项目中复制所有Java和XML代码。受益于此问题将得到永久解决



1
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
       compile 'com.android.support:appcompat-v7:23.1.1'
}

注意:删除testCompile'junit:junit:4.12'行已经解决了我的问题。


1

试试这个:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.google.code.gson:gson:2.2.4'
}

1

如果您是代理人。Android Studio将为http添加代理到Gradle,但不会为https添加代理。将https的代理设置添加到gradle.properties


1

如果您遇到此问题,可以通过以下方法完全解决:

build.gradle(项目:...)

取代这个

    buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'

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

allprojects {
    repositories {
        mavenCentral()

    }
}

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

1

我有同样的问题,但又有另一个问题。

我的另一个问题是Gradle构建太慢!

我这样做解决了我的问题

如果您喜欢mdew,则在创建项目时就需要这样做

因此,如果您想将默认选项设置为maven

做这个:

转到文件夹:

C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidProject\root

然后build.gradle.ftl使用notepad ++或notepad 打开文件,并全部替换jcenter()mavenCentral()

编辑:为什么它的失败投票?你不喜欢吗?


1

我不知道为什么Android Studio不与gradle同步。原来,它不喜欢我的VPN,所以请当心!



1

只需连接到Internet并启动Android Studio并打开您的项目即可。在Gradle Sync中,它将从Internet下载依赖项(所有JAR文件)。这为我解决了。无需在Gradle文件中进行编辑,所有操作均由Android Studio自动完成。使用Android Studio 2.2 :)

同样不要忘记安装Java JDK 1.x(7或8都可以正常工作)。


1

我很乐意为您提供最适合我的情况的解决方案:

  • 首先,请确保添加

    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }

    buildscript {}块内的项目级build.gradle文件

  • 然后加

    allprojects {
        repositories {
            maven { url 'http://repo1.maven.org/maven2' }
        }

    到项目级别的build.gradle文件

  • 接下来的一点是添加

    repositories {
        jcenter()
        mavenCentral()
    }

    到模块级别的构建级别 buildTypes{ }


1

寻找许多答案,但无济于事。幸运的是找到了简单的解决方案。无需评论junit4.12或将其删除。问题在这里:

- androidTestCompile files('libs/junit-4.12.jar')

这部分向我们展示了在您项目的库中查找文件的路径。不知道为什么,但由于某种原因默认情况下为空。在我的情况下,路径为:

C:\Users\arzakhar\AndroidStudioProjects\MyApp\app\libs

当然,您可以在代码中删除此行,build.grandle(Module.app)但稍后可能需要。解决方法如下:

1-下载junit-4.12.jar或从您的Android Studio文件夹复制它,通常它应该在该文件夹中。就我而言,它在这里:

C:\Program Files\Android\Android Studio\lib

到上述目录(到您的项目)

2-删除并添加

在这里,您应该将根目录重新输入到junit-4.12.jar

3-重建

4-努力工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.