Błąd: (23, 17) Nie udało się rozwiązać: junit: junit: 4.12


134

Dlaczego za każdym razem, gdy tworzę nowy projekt w Android Studio, zawsze pojawia się:

Błąd: (23, 17) Nie udało się rozwiązać problemu: junit: junit: 4.12?

Kiedy usuwam testCompile 'junit:junit:4.12'w zależnościach, to już nie jest problem.

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

Wygląda na to, że nie masz słoika w swoim repozytorium.
Jens,

jak sobie z tym poradzić? Zainstalowałem JDK 7 i
dodałem

Którego repozytorium używasz dla gradle.
Jens,

1
Wygląda na to, że słoiki są obecne jcenter.bintray.com/junit/junit/4.12
Jens

1
Sprawdź moją nową odpowiedź: stackoverflow.com/a/38151747/5733853
VahidHoseini

Odpowiedzi:


126

Miałem ten sam problem. Rozwiązany przez dodanie adresu URL brakującego repozytorium w build.gradlepliku:

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

Otóż ​​to.


To zdecydowanie rozwiązało problem za mnie, więc przynajmniej mogę teraz synchronizować gradle
rewolucyjny

16
jaka była podstawowa przyczyna tego?
Raulp

To rozwiązało problem, ale co to jest maven?
Sithu

1
Powinien zostać dodany powyżej buildTypes, w przeciwnym razie wystąpi błąd buildTypes do groovy.lang.Closure .
Sithu

O co chodzi jcenter()? Czy konieczne jest wyeliminowanie jcenter()z repozytoriów?
Hosein Aqajani,

34

Po prostu usuń „testCompile” junit: junit: 4.12 ”z pliku 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'
 }

pracował dla mnie i jestem szczęśliwy! :)

Pamiętaj, że to nie jest właściwa odpowiedź na to pytanie. Wspomniałem o tym, ponieważ działa, gdy usuniesz powyższe linie.


24

Przejdź do Plik -> Struktura projektu. Otworzy się następujące okno:

wprowadź opis obrazu tutaj

Stamtąd:

  1. usuń bibliotekę junit (wybierz junit i naciśnij przycisk „-” poniżej) i
  2. dodaj go ponownie (wybierz przycisk „+” poniżej, wybierz „oddział biblioteki”, wyszukaj „junit”, naciśnij OK). Naciśnij OK, aby zastosować zmiany. Po około 30 sekundach synchronizacja gradle powinna działać poprawnie.

Mam nadzieję, że u Ciebie też zadziała: D


3
Próbowałem tego, ale kiedy poszedłem dodać junit z powrotem, nie było go ... wtf
Brew Dain

Aby ręcznie dodać junit do projektu, otwórz plik „build.gradle (Module: app)” z lewej strony. Dodaj tę linię: testCompile 'junit: junit: 4.12' na końcu pliku w dowolnym miejscu między blokiem zależności i na koniec zsynchronizuj projekt, przechodząc do NARZĘDZIA> ANDROID> SYNCHRONIZUJ PROJEKT Z GRADLE PLIKAMI
Hasaan Ali

nie działa dla mnie. po ponownym dodaniu junit4.12 dał ten sam błąd co OP.
user13107

15

Nie można uzyskać biblioteki junit.

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

Po dodaniu powyższej linii do bloku androida w pliku build.gradle rozwiązało to problem. Może to być spowodowane tym, że Twoje studio Android nie ma biblioteki junit.


15

dodaj repozytorium do pliku build.gradle

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

13

Prawdopodobnie twoja ocena jest niekompletna, polecam dodać następujące

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

ale w niektórych przypadkach nie zadziała, możesz go całkowicie usunąć ze swoich zależności w swoim gradle.

Myślę, że będzie dobrze, jeśli ponownie zainstalujesz studio android z warunkiem usuwania folderu gradle, który znajduje się w folderze użytkownika .gradle


8

Oto, co zrobiłem, aby rozwiązać ten sam problem. Jestem za zaporą ogniową, co, jak przypuszczam, jest tym samym problemem, co twój. Więc próbowałem usunąć

testCompile 'junit:junit:4.12' line 

ale to mi nie pomogło. Próbowałem dodać poniższe linie kodu:

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

Nawet to mi się nie udało.

Próbowałem usunąć (-) i odczytać (+) Junit4.12 z zależności biblioteki w Ustawieniach modułu. Jednak to mi się nie udało.

Kilkakrotnie próbowałem synchronizować i odbudowywać projekt. Nadal nie działa dla mnie.

Na koniec ręcznie pobrałem plik Junit4.12.jar ze strony mvnrepository. Umieściłem ten plik jar w obszarze roboczym systemu Android w folderze Project w folderze libs. Następnie przejdź do Module Settings> Dependencies Tab> (+)> File Dependency> w oknie Sleect path, rozwiń folder `` libs '', a znajdziesz tam skopiowany plik Jar. Wybierz plik i kliknij „OK”. Teraz usuń poprzednią wersję junit4.12 z listy zależności.

Powinieneś mieć jeden wpis "libs\junit-4.12.jar" na liście zależności. Teraz kliknij „OK”.

Teraz Gradle odbuduje projekt i powinno być gotowe.

Mam nadzieję że to pomoże!


Właśnie unieważniłem pamięć podręczną i ponownie uruchomiłem Android Studio.
Mohammedsalim Shivani

6

Spróbowałem kiedykolwiek, ale jedyną rzeczą, która pomogła mi rozwiązać problem, było usunięcie linii

testCompile 'junit:junit:4.12'

z poziomu aplikacji.


5

Dzieje się tak, ponieważ HTTPS jest blokowany przez serwer proxy. Spróbuj zmienić domyślny jcenter (który używa HTTPS) na HTTP.

Przed

repositories {
     jcenter()
}

Po

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

Powtórz powyższy krok dla wszystkich projektów.

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

Lub też zmiana z jcenter na mavenCentral również działała

repositories {
   mavenCentral()
}

Nie działa, gdy jest proxy, ruch HTTP działa, a ruch HTTPS jest zabroniony.
Diti

Hmm ... To właśnie starałem się wyjaśnić w swoim poście. Domyślnie używa HTTPS, który jest zablokowany. Zobacz przed i po
jafarmlp

4

Otrzymałem ten błąd po utworzeniu nowego projektu. W pliku build.gradle miałem to:

jcenter()

Zmieniam to na następujące i błąd zniknął:

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

Myślę, że dzieje się tak dlatego, że jestem za zaporą ogniową i określenie adresu URL w ten sposób zmienia go z https na http


1
Wielkie dzięki . Ta poprawka mi pomogła
Android_programmer_office

4

Prawdopodobnie jesteś za proxy. Zdarzyło mi się, że użyłem mojego mobilnego tetheringu (bez proxy) projektu odbudowy i błąd zniknął. Przywrócono pierwotne połączenie (z proxy) i odbudowano bez błędów.


Musiałem również określić proxy dla gradle, ale nie chciałem dodawać moich danych logowania do każdego projektu. Odpowiedzią było dodanie gradle.properties do mojego katalogu użytkownika. Więcej informacji w tej odpowiedzi - stackoverflow.com/a/26524019/542629 .
walkingTarget

4

Czy używasz proxy ? Jeśli tak, problem może wynikać z braku konfiguracji sieci dla protokołu HTTPS w gradle.propertiespliku.

AndroidStudio automatycznie umieszcza domyślne ustawienia serwera proxy w gradle.propertiespliku w projekcie, ale tylko dla protokołu HTTP i zapomina o protokole HTTPS.

Zasadniczo twój gradle.propertiesplik musi zawierać konfigurację zarówno http, jak i 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

Najczęściej ten problem pojawia się, gdy kiedykolwiek zaktualizujesz swój zestaw SDK, w momencie tworzenia projektu kompilacja Gradle kończy się niepowodzeniem. Jeśli dodasz repozytoria maven i jcenter do pliku build.gradle (moduł: aplikacja), problem zostanie rozwiązany.

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

To są dwie linie, które musisz dodać po

apply plugin: 'com.android.application' 

Tak wygląda Twój kod po dodaniu tych dwóch wierszy

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

Błąd jest spowodowany brakującymi plikami jar. Moje proste rozwiązanie polega na skopiowaniu wszystkich plików, których nie można rozwiązać, do C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository ... (ścieżka do pliku może być inna). Mam około 6 zależności, których nie można rozwiązać, junit jest jedną z nich, a pozostałe to com, org i javax. Ponieważ jestem za zaporą ogniową, nawet jeśli dodałem kod repozytorium, wydaje się, że Android Studio nie ma do niego dostępu. Poszedłem do repozytorium Mavena i pobrałem wszystkie pliki, których nie można rozwiązać. Problem rozwiązany i synchronizacja Gradle bez błędów. Ale jestem certyfikowanym nowicjuszem z tylko 1-dniowym doświadczeniem, więc nie, jeśli jest to właściwy sposób.

Przykładowy błąd: nie można rozwiązać com: squareup: javawriter: 2.1.1

Krok 1: Utworzyłem ścieżkę C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Krok 2: Pobrałem wszystkie pliki jar z repozytorium Maven: http://repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

Krok 3: Ręcznie pobrałem wszystkie pliki .jar z tego katalogu

Krok 4: Skopiowałem je do C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Powtórzyłem to dla wszystkich plików, które nie zostały rozwiązane, w tym junit.

Dla junit, oto katalog, który utworzyłem: C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12, a następnie skopiowałem junit-4.12.jar do tego katalogu i błąd junit zniknął.


3
  1. Upewnij się, że nie jesteś za proxy!
  2. Jeśli skonfigurowałeś Androida Strudio do pracy z proxy, wyłącz tę opcję w preferencjach Android Studio
  3. Przejdź do gradle.properties w widoku Androida w Android Studio i usuń całą konfigurację proxy
  4. Zsynchronizuj teraz swoją ocenę
  5. Miłego kodowania!

2

ZMIEŃ swój build.gradle w ten sposób, działa dobrze dla mnie:

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

dodany

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

do android


2

Idź do File -> Project Structure -> dependency Tam znajdziesz -> junit: unit: 4.12

Po prawej stronie ... wybierz kompilację z listy rozwijanej. Proste… gotowe.

Obraz referencyjny: http://i.stack.imgur.com/5WvS3.png

VV Czerwonych


2

Moja instalacja Android Studio jest całkowicie offline. Aby rozwiązać tego rodzaju problemy, użyłem Process Monitor. Okazało się, że brakuje kilku plików w „Android Studio \ gradle \ m2repository”. Pobrałem wszystkie pliki z

  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/ (mogę zamieścić tylko dwa linki ... ;-))

i skopiowałem te pliki do „Android Studio \ gradle \ m2repository”. Musisz utworzyć strukturę poniżej „m2repository”, ponieważ znajduje się ona poniżej „maven2”. Może brakuje plików, ale w tej chwili przynajmniej kompilacja Gradle jest zakończona bez błędów.


we wszystkich tych odpowiedziach była to jedyna, która faktycznie rozwiązała mój problem (przetestowałem je wszystkie!). oczywiście potrzebowałem więcej repozytoriów, ale rozwiązanie było takie samo. jedynym, który nie działał, był „javax.annotation-api / 1.2”, który po kilku testach musiałem usunąć go z zależności. dzięki @Tasko
Lord Sepid

2

Miałem ten sam problem.

  • 1 opcja: Pobierz junit 4.12.jar i skopiuj go do folderu lib i uruchom ponownie Android Studio. Korzyści, nie musisz tworzyć żadnego nowego projektu

  • Opcja 2: Utwórz nowy projekt z połączeniami internetowymi i skopiuj cały kod java i XML do nowo utworzonego projektu. Skorzystaj z tego, że problem zostanie rozwiązany na stałe


1

Usuń linię testCompile 'junit:junit:4.12'

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

Następnie ponownie zsynchronizuj projekt.


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

Uwaga: Usuń wiersz testCompile 'junit: junit: 4.12' został rozwiązany mój problem.


1

Spróbuj tego:

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

Jeśli korzystasz z serwera proxy. Android Studio doda proxy dla http do Gradle, ale nie doda proxy dla https. Dodaj ustawienia proxy dla https do gradle.properties


1

jeśli napotkałeś ten problem, możesz go całkowicie rozwiązać, zmieniając:

build.gradle (projekt: ...)

wymień to

    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

Miałem ten sam problem, ale z innym problemem.

Moim innym problemem było to, że kompilacja Gradle była zbyt wolna!

Rozwiązałem swój problem, wykonując to L.

Jeśli podoba Ci się mdew, potrzebujesz tego za każdym razem, gdy tworzysz projekt, aby to zrobić

Więc jeśli chcesz ustawić domyślną opcję na maven

Zrób to:

Przejdź do folderu:

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

Następnie otwórz build.gradle.ftlplik z Notepad ++ lub notatnika i zastąpić wszystko jcenter()z mavenCentral().

EDYCJA: Dlaczego głosowano w dół? nie lubisz tego?


1

Nie mogłem zrozumieć, dlaczego Android Studio nie synchronizuje się z Gradle. Okazało się, że nie spodobał mu się mój VPN, więc uważaj na to!


1

Idź do Idź do "Plik" -> "Struktura projektu" -> "Aplikacja" Na karcie "Właściwości". W polu „Library Repository” wpisz „ http://repo1.maven.org/maven2 ”, a następnie naciśnij OK. Tak to zostało dla mnie naprawione. Teraz projekt jest w trakcie kompilacji.


1

Po prostu połącz się z Internetem, uruchom Android Studio i otwórz swój projekt. Podczas gdy Gradle Sync pobierze zależności z Internetu (wszystkie pliki JAR). To rozwiązało to dla mnie. Brak edycji w pliku Gradle, wszystko zostało zrobione automatycznie przez Android Studio. Korzystanie z Android Studio 2.2 :)

Nie zapomnij również zainstalować Java JDK 1.x (7 lub 8 wszystko działa dobrze).


1

Chciałbym zasugerować rozwiązanie, które doskonale pasuje do mojej sytuacji:

  • najpierw upewnij się, że dodaj

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

    do pliku build.gradle na poziomie projektu wewnątrz buildscript {}bloku

  • następnie dodaj

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

    do pliku build.gradle na poziomie projektu

  • następny punkt to dodawanie

    repositories {
        jcenter()
        mavenCentral()
    }
    

    na poziomie modułu build-gradle wewnątrz buildTypes{ }


1

Przejrzyj wiele odpowiedzi, ale nic nie działa. Na szczęście znalazłem łatwe rozwiązanie. Nie trzeba komentować junit4.12 ani go usuwać. Problem jest tutaj:

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

Ta część pokazuje nam ścieżkę do poszukiwania pliku w bibliotece w Twoim projekcie. Nie mam pojęcia dlaczego, ale z jakiegoś powodu domyślnie jest pusty. W moim przypadku ścieżka to:

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

Jasne, że możesz usunąć tę linię w kodzie build.grandle(Module.app) ale może być potrzebny później. Oto rozwiązanie:

1 - pobierz junit-4.12.jar lub skopiuj go z folderu Android Studio, normalnie powinien tam być. W moim przypadku to tutaj:

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

do katalogu wymienionego powyżej (do twojego projektu)

2 - usuń i dodaj

tutaj powinieneś ponownie wprowadzić root do twojego junit-4.12.jar

3 - odbuduj

4 - ciężko pracuj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.