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'
}
fathurzero
źródło
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.

mdew
źródło
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.

Naveed Jamali
źródło
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

Hasaan Ali
źródło
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.

Mona
źródło
15

dodaj repozytorium do pliku build.gradle

repositories {
    maven { url 'http://repo1.maven.org/maven2' }
}
Gaurav
źródło
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

VahidHoseini
źródło
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!

Murtuza K
źródło
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.

Ortal D
źródło
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()
}
jafarmlp
źródło
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

Al Lelopath
źródło
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.

Asem Daaboul
źródło
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
Štarke
źródło
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'
        }
    }
}
saibaba vali
źródło
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ął.

Roy Selim
źródło
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!
Catluc
źródło
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


źródło
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

Vaisakh Venugopal
źródło
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.

Tasko
źródło
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

Akash Jaiswal
źródło
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.

Muhammad Salman
źródło
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.

hasan sabbir
źródło
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'
}
Abdullah Al Hasan
źródło
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

KennyXu
źródło
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
}
VahidHoseini
źródło
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?

Wyświetlana nazwa
źródło
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!

Ben
źródło
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.

MM
źródło
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).

Rupanshu Raman
źródło
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{ }

iamtodor
źródło
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

Arthur Zakharov
źródło