Erro: (23, 17) Falha ao resolver: junit: junit: 4.12


133

Por que sempre que crio um novo projeto no Android Studio, ele sempre aparece:

Erro: (23, 17) Falha ao resolver: junit: junit: 4.12?

Quando removo as testCompile 'junit:junit:4.12'dependências, não é mais um problema.

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

Parece que você tem o jar não no seu repositório.
Jens

? como lidar com isso Eu instalei o JDK 7 e também adicionar o caminho nas variáveis de ambiente
fathurzero

Qual repositório você usa para gradle.
Jens

1
Parece que os jar's estão presentes jcenter.bintray.com/junit/junit/4.12 #
Jens

1
Verifique minha nova resposta: stackoverflow.com/a/38151747/5733853
VahidHoseini

Respostas:


124

Eu tive o mesmo problema. Resolvido adicionando url para o repositório ausente no build.gradlearquivo:

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

É isso aí.


Isso definitivamente resolvido o problema para mim, então pelo menos eu posso Gradle-sync agora
revolucionário

16
qual foi a causa raiz disso?
Raulp 5/10

Isso resolveu o problema, mas o que é isso maven?
Sithu

1
Ele deve ser adicionado acima buildTypes, caso contrário, o erro buildTypes não poderá ser aplicado a groovy.lang.Closure ocorrerá.
Sithu

Que tal jcenter()? É necessário eliminar jcenter()dos repositórios?
Hosein Aqajani

34

Apenas remova o "testCompile 'junit: junit: 4.12'" do arquivo build.gradle:

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

trabalhou para mim e estou feliz! :)

Lembre-se de que essa não é a resposta real desta pergunta. Eu mencionei isso porque funciona quando você remove as linhas acima.


24

Vá para Arquivo -> Estrutura do projeto. A seguinte janela será aberta:

insira a descrição da imagem aqui

De lá:

  1. remova a biblioteca junit (selecione junit e pressione o botão "-" abaixo) e
  2. adicione-o novamente (selecione o botão "+" abaixo, selecione "dep. biblioteca", pesquise "junit" e pressione OK). Pressione OK para aplicar as alterações. Após cerca de 30 segundos, a sincronização do gradle deve funcionar bem.

Espero que funcione para você também: D


3
Eu tentei isso, mas quando eu fui para adicionar junit volta em que não estava lá ... wtf
Brew Dain

Para adicionar junit manualmente ao projeto, abra o arquivo "build.gradle (Module: app)" no lado esquerdo. Adicione esta linha: testCompile 'junit: junit: 4.12' no final do arquivo em qualquer lugar entre o bloco de dependências e finalmente sincronize o projeto em TOOLS> ANDROID> SYNC PROJECT WITH GRADLE FILES
Hasaan Ali

não funcionou para mim. depois de adicionar junit4.12, deu o mesmo erro do OP.
precisa saber é o seguinte

15

Não é possível obter a biblioteca junit.

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

Depois de adicionar a linha acima dentro do bloco android no arquivo build.gradle, ele resolveu o problema. Isso pode ocorrer porque o seu estúdio Android não possui biblioteca junit.


15

adicione repositório ao seu arquivo build.gradle

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

13

Provavelmente sua graduação está incompleta, recomendo que você adicione o seguinte

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

mas, em alguns casos, não funcionará, você pode excluí-lo completamente de suas dependências na sua nota.

Eu acho que vai ficar tudo bem se você reinstalar o android studio com a condição de exclusão da pasta gradle que está na pasta do usuário .gradle


8

Aqui está o que eu fiz para resolver o mesmo problema. Estou atrás de um firewall, que é o mesmo problema que o seu, suponho. Então eu tentei remover o

testCompile 'junit:junit:4.12' line 

mas isso não funcionou para mim. Tentei adicionar abaixo as linhas de código:

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

Mesmo isso não funcionou para mim.

Tentei remover (-) e ler (+) o Junit4.12 das dependências da biblioteca em Configurações do módulo. Ainda assim, isso não funcionou para mim.

Tentei sincronizar e reconstruir o projeto várias vezes. Ainda não funcionou para mim.

Finalmente, o que fiz foi baixar manualmente o arquivo Junit4.12.jar no site mvnrepository. Coloquei esse arquivo jar no Androids Workspace, na pasta Project, dentro da pasta libs. Em seguida, vá para Configurações do módulo> Guia Dependências> (+)> Dependência de arquivos> na janela Caminho do caminho, expanda a pasta 'libs' e você encontrará o arquivo Jar que você copiou lá dentro. Selecione o arquivo e clique em 'OK'. Agora remova a versão anterior do junit4.12 da lista de dependências.

Você deve ter uma entrada "libs\junit-4.12.jar"na lista Dependências. Agora clique em 'OK'.

Agora, Gradle reconstruirá o projeto e você deve estar pronto.

Espero que isto ajude!


Acabei de invalidar o cache e reiniciei o Android Studio.
Mohammedsalim Shivani 27/03

6

Vou tentar tudo, mas a única coisa que me ajuda a resolver o problema foi excluir a linha

testCompile 'junit:junit:4.12'

do aplicativo gradel.


5

Isso acontece porque o HTTPS está bloqueado pelo proxy. Tente mudar do jcenter padrão (que usa HTTPS) para HTTP.

Antes

repositories {
     jcenter()
}

Depois de

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

Repita a etapa acima para todos os projetos.

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

Não funciona quando proxy, o tráfego HTTP funciona e o tráfego HTTPS é proibido.
Diti

Hmm .. Isto é o que eu tentei explicar no meu post. Por padrão, ele usa HTTPS que está bloqueado. Ver Antes e Depois
jafarmlp

4

Eu recebi esse erro depois de criar um novo projeto. No arquivo build.gradle, eu tinha o seguinte:

jcenter()

Eu mudo para o seguinte e o erro desapareceu:

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

Eu acho que isso ocorre porque estou atrás de um firewall e especificando o URL assim, altera-o de https para http


1
Muito obrigado . Esta correção me ajudou
Android_programmer_office

4

Provavelmente você está por trás do proxy. Aconteceu comigo, usei meu projeto de reconstrução de tethering móvel (sem proxy) e o erro desapareceu. Retornado à conexão original (com proxy) e reconstruído sem erros.


Eu também precisava especificar um proxy para gradle, mas não queria adicionar meus detalhes de login a todos os projetos. A resposta foi adicionar um gradle.properties ao meu diretório de usuários. Mais informações nesta resposta - stackoverflow.com/a/26524019/542629 .
walkingTarget

4

Você está usando proxy ? Nesse caso, o problema pode estar na falta de configuração de rede para https no seu gradle.propertiesarquivo.

O AndroidStudio coloca automaticamente suas configurações de proxy padrão para gradle.propertiesarquivar no seu projeto, mas apenas para http e esquece https.

Então, basicamente, seu gradle.propertiesarquivo precisa conter as configurações http e 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

Principalmente, esse problema ocorre sempre que você atualiza seu SDK, no momento da criação do projeto, a construção do Gradle falha. Se você adicionar os repositórios maven e jcenter ao seu build.gradle (Module: app), seu problema será resolvido.

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

Estas são as duas linhas que você deve adicionar após

apply plugin: 'com.android.application' 

É assim que seu código se parece depois de adicionar essas duas linhas

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

O erro é causado pela falta de arquivos jar. Minha solução simples é apenas copiar todos os arquivos que não são resolvidos para o repositório C: \ Arquivos de programas \ Android \ Android Studio \ gradle \ m2 ... (o caminho do arquivo pode ser diferente). Eu tenho cerca de 6 dependências que não podem ser resolvidas, junit é uma delas e as outras são com e org e javax. Como estou atrás de um firewall, mesmo que eu tenha adicionado o código ao repositório, o Android Studio parece não acessá-lo. Fui ao repositório do maven e baixei todos os arquivos que não serão resolvidos. Problema resolvido e o Gradle sincroniza sem erro. Mas eu sou um novato certificado com apenas 1 dia de experiência, então não sei se essa é a maneira correta de fazê-lo.

Exemplo de erro: Não é possível resolver com: squareup: javawriter: 2.1.1

Etapa 1: criei o caminho C: \ Arquivos de programas \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Etapa 2: baixei todos os arquivos jar do repositório maven: http://repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

Etapa 3: baixei manualmente todos os arquivos .jar deste diretório

Etapa 4: copiei-os para C: \ Arquivos de programas \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Repeti isso para todos os arquivos que não foram resolvidos, incluindo o junit.

Para junit, aqui está o diretório que eu criei: C: \ Arquivos de programas \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12 e, em seguida, copiei o junit-4.12.jar dentro desse diretório e o erro de junit desapareceu.


3
  1. Certifique-se de que você não está atrás de um proxy!
  2. Se você configurou o Android Strudio para funcionar com proxy, desative essa opção nas preferências do Android Studio
  3. Acesse gradle.properties na visualização Android no Android Studio e exclua todas as configurações de proxy
  4. Sincronize sua nota agora
  5. Aproveite a codificação!

2

MUDE seu build.gradle assim, funciona bem para mim:

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

adicionado

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

para android


2

Vá em Arquivo -> Estrutura do Projeto -> dependência Lá você encontrará -> junit: unit: 4.12

No lado direito .. selecione compilar no menu suspenso. Simples .. está feito.

Imagem de referência: http://i.stack.imgur.com/5WvS3.png

VV dos Reds


2

Minha instalação do Android Studio está completamente offline. Para resolver esse tipo de problema, usei o Process Monitor. Ele mostrou que alguns arquivos estão ausentes no "Android Studio \ gradle \ m2repository". Eu baixei todos os arquivos de

  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/ (Só posso postar dois links ... ;-))

e copiou esses arquivos em "Android Studio \ gradle \ m2repository". Você precisa criar a estrutura abaixo de "m2repository", como abaixo de "maven2". Talvez haja mais arquivos ausentes, mas, no momento, pelo menos a compilação Gradle está concluída sem erros.


em todas essas respostas, essa foi a única que realmente resolveu meu problema (eu testei todas elas!). é claro que, para mim, era necessário adicionar mais repositórios, mas a solução era a mesma. o único que não funcionou foi "javax.annotation-api / 1.2" que, após alguns testes, tive que removê-lo das dependências. Obrigado @Tasko
Lord Sepid

2

Eu estava tendo o mesmo problema.

  • 1 opção: Baixe o junit 4.12.jar e copie-o na sua pasta lib e reinicie o android studio. Benefício Você não precisa criar nenhum novo projeto

  • 2 opção: Crie um novo projeto com conexões à Internet e copie todo o código java e XML no projeto recém-criado. Beneficiar este problema será resolvido permanentemente


1

Retire a linha testCompile 'junit:junit:4.12'

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

Depois disso, sincronize o projeto novamente.


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

Nota: Remover a linha testCompile 'junit: junit: 4.12' foi resolvido meu problema.


1

Tente o seguinte:

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

Se você está atrás de um proxy. O Android Studio adicionará proxy para http ao Gradle, mas não para https. Inclua configurações de proxy para https em gradle.properties


1

se você enfrentou esse problema, pode resolvê-lo completamente alterando:

build.gradle (projeto: ...)

substitua isso

    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

Eu tive o mesmo problema, mas com outro problema.

Meu outro problema era que a construção do Gradle era muito lenta!

Resolvi meu problema fazendo issoL

Se você gosta do mdew, precisa disso sempre que estiver criando seu projeto para fazer isso

Portanto, se você deseja definir a opção padrão como maven

Faça isso:

Vá para a pasta:

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

Em seguida, abra o build.gradle.ftlarquivo com o notepad ++ ou notepad e substitua all jcenter()por mavenCentral().

EDIT: Por que está indo para baixo votou? você não gosta?


1

Não consegui entender por que o Android Studio não estava sincronizando com o gradle. Acabou que não gostou da minha VPN, então preste atenção nisso!


1

Vá em "Arquivo" -> "Estrutura do projeto" -> "Aplicativo" Na guia "Propriedades". No campo "Repositório da Biblioteca" , coloque ' http://repo1.maven.org/maven2 ' e pressione Ok. Foi consertado assim para mim. Agora o projeto está compilando.


1

Basta conectar-se à Internet, iniciar o Android Studio e abrir seu projeto. Enquanto o Gradle Sync, ele baixa as dependências da Internet (Todos os arquivos JAR). Isso resolveu para mim. Sem edição no arquivo Gradle, tudo foi feito pelo Android Studio automaticamente. Usando o Android Studio 2.2 :)

Além disso, não esqueça de instalar o Java JDK 1.x (7 ou 8 tudo funciona bem).


1

Gostaria de sugerir a solução, que aperfeiçoa adequada à minha situação:

  • em primeiro lugar, certifique-se de adicionar

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

    no arquivo build.gradle no nível do projeto dentro do buildscript {}bloco

  • então adicione

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

    no arquivo build.gradle no nível do projeto

  • o próximo ponto é adicionar

    repositories {
        jcenter()
        mavenCentral()
    }

    para o nível de construção no nível do módulo buildTypes{ }


1

Procure muitas respostas, mas nada funciona. Felizmente havia encontrado a solução fácil. Não há necessidade de comentar junit4.12 ou excluí-lo. O problema está aqui:

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

Esta parte mostra o caminho para procurar o arquivo na biblioteca do seu projeto. Não sei por que, mas por algum motivo, por padrão, está vazio. No meu caso, o caminho é:

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

Claro que você pode excluir esta linha no código, build.grandle(Module.app)mas pode ser necessário mais tarde. Aqui está a solução:

1 - faça o download do junit-4.12.jar ou copie-o da pasta Android Studio, normalmente ele deve estar lá. No meu caso, foi aqui:

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

para o diretório mencionado acima (para o seu projeto)

2 - excluir e adicionar

aqui você deve inserir novamente a raiz no seu junit-4.12.jar

3 - reconstruir

4 - trabalhe duro

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.