ChatGPT解决这个技术问题 Extra ChatGPT

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

为什么每次我在 Android Studio 中创建一个新项目时,总是出现:

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

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

构建.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 不在你的存储库中。
如何处理?我已经安装了 JDK 7 并且还在环境变量中添加了路径
您将哪个存储库用于 gradle。
检查我的新答案:stackoverflow.com/a/38151747/5733853

A
Alex44

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

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

而已。


这绝对为我解决了这个问题,所以至少我现在可以同步
造成这种情况的根本原因是什么?
这确实解决了问题,但那是什么 maven
应在buildTypes上方添加,否则会出现错误buildTypes cannot be applied to groovy.lang.Closure
jcenter() 呢?是否有必要从存储库中删除 jcenter()
G
G. Werner

只需从 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'
 }

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

请记住,这不是这个问题的实际答案。我提到了这一点,因为当你删除上面的行时它会起作用。


H
Hasaan Ali

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

https://i.stack.imgur.com/5WvS3.png

从那里:

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

希望它也适合你:D


我试过这个但是当我去添加junit时它不存在...... wtf
要手动将 junit 添加到项目中,请从左侧打开“build.gradle (Module: app)”文件。添加这一行: testCompile 'junit:junit:4.12' 在文件末尾的依赖项块之间的任何位置,最后通过进入 TOOLS > ANDROID > SYNC PROJECT WITH GRADLE FILES 同步项目
对我不起作用。再次添加 junit4.12 后,它给出了与 OP 相同的错误。
V
Vaibhav Mule

它无法获取junit库。

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

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


G
Gaurav

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

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

J
Jeremy J Starcher

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

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

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

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


M
Murtuza K

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

testCompile 'junit:junit:4.12' line 

但这对我不起作用。我尝试添加以下代码行:

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

即使那对我也不起作用。

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

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

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

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

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

希望这可以帮助!


我刚刚使缓存无效并重新启动了 Android Studio。
J
Jafar Karuthedath

发生这种情况是因为 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/"
    }
  }
}

或者从 jcenter 更改为 mavenCentral 也有效

repositories {
   mavenCentral()
}

代理时不起作用,HTTP 流量有效,HTTPS 流量被禁止。
嗯..这是我试图在我的帖子中解释的。默认情况下,它使用被阻止的 HTTPS。见之前和之后
O
Ortal D

我会尝试一切,但唯一能帮助我解决问题的是删除该行

testCompile 'junit:junit:4.12'

从应用程序等级。


A
Al Lelopath

创建新项目后,我收到此错误。在 build.gradle 文件中,我有这个:

jcenter()

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

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

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


非常感谢 。这个修复帮助了我
A
Asem Daaboul

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


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

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

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

s
saibaba vali

大多数情况下,当您更新 SDK 时,会在创建项目时 Gradle 构建失败时出现此问题。如果您将 maven 和 jcenter 存储库添加到您的 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'
        }
    }
}

R
Rodrigue

确保您不在代理后面!如果您将 Android Strudio 配置为使用代理,请务必在 Android Studio 首选项下禁用该选项转到 Android Studio 中 Android 视图下的 gradle.properties 并删除所有代理配置 立即同步您的 gradle 享受编码!


R
Roy Selim

该错误是由于缺少 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 错误消失了。


佚名

像这样改变你的 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


a
ayhan

转到文件 -> 项目结构 -> 依赖项在那里你会发现 -> junit:unit:4.12

在右侧..从下拉列表中选择编译。很简单。。搞定了。

https://i.stack.imgur.com/5WvS3.png

红军VV


T
Tasko

我安装的 Android Studio 完全离线。为了解决这类问题,我使用了 Process Monitor。它表明“Android Studio\gradle\m2repository”中缺少一些文件。我已经从

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

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


在所有这些答案中,这是唯一真正解决了我的问题的答案(我都测试了!)。当然,对我来说,它需要添加更多存储库,但解决方案是相同的。唯一不起作用的是“javax.annotation-api/1.2”,经过几次测试后,我不得不将其从依赖项中删除。谢谢@Tasko
M
M. Zavarello

我遇到了同样的问题。

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

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


S
Shashanth

寻找许多答案,但没有任何效果。幸运的是找到了简单的解决方案。无需评论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 - 删除和添加

https://i.stack.imgur.com/X4gBs.png

- 重建

- 努力工作


C
Community

删除行 testCompile 'junit:junit:4.12'

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

之后再次同步项目。


O
Oliver Muthomi

只需尝试在有活动的 Internet 连接的情况下编译并运行您的项目。

它在 Android Studio 1.5 Ubuntu 15.04 中为我工作


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

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


F
Floern

尝试这个:

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'
}

K
KennyXu

如果你在代理后面。 Android Studio 会将 http 代理添加到 Gradle,但不会为 https 添加代理。将 https 的代理设置添加到 gradle.properties


C
Community

如果您遇到此问题,您可以通过更改完全解决它:

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
}

D
Display name

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

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

我通过这样做解决了我的问题L

如果您确实喜欢 mdew,那么您在创建项目时需要这样做

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

做这个:

转到文件夹:

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

然后用 notepad++ 或 notepad 打开 build.gradle.ftl 文件并将所有 jcenter() 替换为 mavenCentral()

编辑:为什么它会被否决?你不喜欢吗?


B
Ben

我无法弄清楚为什么 Android Studio 没有与 gradle 同步。原来它不喜欢我的VPN,所以要小心!


M
M.M

转到转到“文件”-> “项目结构”-> “应用程序”在“属性”选项卡中。在“库存储库”field 中输入“http://repo1.maven.org/maven2”,然后按确定。对我来说就是这样固定的。现在项目正在编译。


R
Rupanshu Raman

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

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅