Fehler: (23, 17) Fehler beim Auflösen: junit: junit: 4.12

133

Warum wird jedes Mal, wenn ich ein neues Projekt in Android Studio erstelle, Folgendes angezeigt:

Fehler: (23, 17) Fehler beim Auflösen: junit: junit: 4.12?

Wenn ich testCompile 'junit:junit:4.12'in Abhängigkeiten entferne , ist das kein Problem mehr.

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'
}
Vaterurzero
quelle
Sieht so aus, als hätten Sie das Glas nicht in Ihrem Repository.
Jens
Wie
gehe
Welches Repository verwenden Sie für Gradle?
Jens
1
Sieht aus wie die Gläser
Jens
1
Überprüfen Sie meine neue Antwort: stackoverflow.com/a/38151747/5733853
VahidHoseini

Antworten:

124

Ich hatte das gleiche Problem. Gelöst durch Hinzufügen einer URL für fehlendes Repository in der build.gradleDatei:

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

Das ist es.

mdew
quelle
Das hat das Problem definitiv für mich gelöst, so dass ich zumindest jetzt gradle-synchronisieren kann
revolutionär
16
Was war die Hauptursache dafür?
Raulp
Dies hat das Problem gelöst, aber was ist das maven?
Sithu
1
Es sollte oben hinzugefügt werden buildTypes, da sonst der Fehler buildTypes nicht auf groovy.lang angewendet werden kann.
Sithu
Was ist mit jcenter()? Ist es notwendig, jcenter()aus Repositories zu entfernen?
Hosein Aqajani
34

Entfernen Sie einfach das "testCompile 'junit: junit: 4.12'" aus der Datei 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'
 }

arbeitete für mich und ich bin glücklich! :) :)

Denken Sie daran, dass dies nicht die eigentliche Antwort auf diese Frage ist. Ich habe dies erwähnt, weil es funktioniert, wenn Sie die obigen Zeilen entfernen.

Naveed Jamali
quelle
24

Gehen Sie zu Datei -> Projektstruktur. Das folgende Fenster wird geöffnet:

Geben Sie hier die Bildbeschreibung ein

Von dort:

  1. Entfernen Sie die Junit-Bibliothek (wählen Sie Junit aus und drücken Sie die Taste "-" unten) und
  2. Fügen Sie es erneut hinzu (wählen Sie unten die Schaltfläche "+", wählen Sie "Bibliotheksabteilung", suchen Sie nach "junit" und drücken Sie OK). Drücken Sie OK, um die Änderungen zu übernehmen. Nach ca. 30 Sekunden sollte Ihre Gradle-Synchronisierung einwandfrei funktionieren.

Hoffe es funktioniert auch bei dir: D.

Hasaan Ali
quelle
3
Ich habe es versucht, aber als ich Junit wieder hinzufügen wollte, war es nicht da ... wtf
Brew Dain
Um Junit manuell zum Projekt hinzuzufügen, öffnen Sie die Datei "build.gradle (Module: app)" auf der linken Seite. Fügen Sie diese Zeile hinzu: testCompile 'junit: junit: 4.12' am Ende der Datei irgendwo zwischen den Abhängigkeitsblöcken und synchronisieren Sie das Projekt schließlich unter TOOLS> ANDROID> SYNC PROJECT WITH GRADLE FILES
Hasaan Ali
hat bei mir nicht funktioniert. Nach dem erneuten Hinzufügen von junit4.12 gab es den gleichen Fehler wie OP.
user13107
15

Es ist nicht möglich, eine Junit-Bibliothek zu erhalten.

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

Nach dem Hinzufügen der obigen Zeile innerhalb des Android-Blocks in der Datei build.gradle wurde das Problem behoben. Dies kann daran liegen, dass Ihr Android-Studio keine Junit-Bibliothek hat.

Mona
quelle
15

Fügen Sie ein Repository in Ihre build.gradle-Datei ein

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

Wahrscheinlich ist Ihr Gradle unvollständig. Ich empfehle Ihnen, Folgendes hinzuzufügen

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

In einigen Fällen funktioniert dies jedoch nicht. Sie können es vollständig aus Ihren Abhängigkeiten in Ihrem Gradle löschen.

Ich denke, es wird in Ordnung sein, wenn Sie das Android Studio mit der Bedingung zum Löschen des Gradle-Ordners neu installieren, die sich im Benutzerordner befindet .gradle

VahidHoseini
quelle
8

Hier ist, was ich getan habe, um das gleiche Problem zu lösen. Ich bin hinter einer Firewall, was vermutlich dasselbe Problem ist wie deins. Also hatte ich versucht das zu entfernen

testCompile 'junit:junit:4.12' line 

aber das hat bei mir nicht funktioniert. Ich habe versucht, die folgenden Codezeilen hinzuzufügen:

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

Auch das hat bei mir nicht funktioniert.

Ich habe versucht, (-) zu entfernen und (+) Junit4.12 aus den Bibliotheksabhängigkeiten unter Moduleinstellungen zu lesen. Trotzdem hat das bei mir nicht funktioniert.

Versucht, das Projekt mehrmals zu synchronisieren und neu zu erstellen. Hat bei mir immer noch nicht funktioniert.

Schließlich habe ich die Datei Junit4.12.jar manuell von der mvnrepository-Website heruntergeladen. Ich habe diese JAR-Datei im Androids Workspace unter dem Ordner Project im Ordner libs abgelegt. Gehen Sie dann zu Moduleinstellungen> Registerkarte Abhängigkeiten> (+)> Dateiabhängigkeit> im Fenster Pfad auswählen, erweitern Sie den Ordner 'libs' und Sie finden dort die Jar-Datei, die Sie kopiert haben. Wählen Sie die Datei aus und klicken Sie auf "OK". Entfernen Sie nun die vorherige Version von junit4.12 aus der Liste der Abhängigkeiten.

Sie sollten einen Eintrag "libs\junit-4.12.jar"in der Abhängigkeitsliste haben. Klicken Sie nun auf "OK".

Jetzt wird Gradle das Projekt neu erstellen und Sie sollten bereit sein, loszulegen.

Hoffe das hilft!

Murtuza K.
quelle
Ich habe gerade den Cache ungültig gemacht und das Android Studio neu gestartet.
Mohammedsalim Shivani
6

Ich werde alles versuchen, aber das einzige, was mir bei der Lösung des Problems hilft, war das Löschen der Zeile

testCompile 'junit:junit:4.12'

aus der App gradel.

Ortal D.
quelle
5

Dies liegt daran, dass HTTPS vom Proxy blockiert wird. Versuchen Sie, vom Standard-jcenter (das HTTPS verwendet) in HTTP zu wechseln.

Vor

repositories {
     jcenter()
}

Nach dem

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

Wiederholen Sie den obigen Schritt für alle Projekte.

allprojects {
  repositories {
    jcenter {
        url "http://jcenter.bintray.com/"
    }
  }
}
jafarmlp
quelle
Funktioniert nicht als Proxy, HTTP-Verkehr funktioniert und HTTPS-Verkehr ist verboten.
Diti
Hmm .. Das habe ich in meinem Beitrag zu erklären versucht. Standardmäßig wird HTTPS verwendet, das blockiert ist. Siehe vorher und
nachher
4

Ich habe diesen Fehler nach dem Erstellen eines neuen Projekts erhalten. In der Datei build.gradle hatte ich Folgendes:

jcenter()

Ich ändere es wie folgt und der Fehler ist verschwunden:

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

Ich denke, das liegt daran, dass ich mich hinter einer Firewall befinde und die URL wie folgt spezifiziere, um sie von https in http zu ändern

Al Lelopath
quelle
1
Vielen Dank . Dieser Fix hat mir geholfen
Android_programmer_office
4

Wahrscheinlich stehen Sie hinter dem Proxy. Ist mir passiert, habe mein Mobile Tethering (kein Proxy) Wiederherstellungsprojekt verwendet und der Fehler ist verschwunden. Zurück zur ursprünglichen Verbindung (mit Proxy) und fehlerfreie Wiederherstellung.

Asem Daaboul
quelle
Ich musste auch einen Proxy für gradle angeben, wollte aber nicht jedem Projekt meine Anmeldedaten hinzufügen. Die Antwort war, meinem Benutzerverzeichnis eine gradle.properties hinzuzufügen. Weitere Informationen in dieser Antwort - stackoverflow.com/a/26524019/542629 .
WalkingTarget
4

Verwenden Sie Proxy ? In diesem Fall liegt das Problem möglicherweise in der fehlenden Netzwerkkonfiguration für https in Ihrer gradle.propertiesDatei.

AndroidStudio legt automatisch Ihre Standard-Proxy-Einstellungen gradle.propertiesin Ihrem Projekt ab, jedoch nur für http und vergisst https.

Grundsätzlich muss Ihre gradle.propertiesDatei sowohl http als auch https config enthalten:

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
quelle
3

Meistens tritt dieses Problem auf, wenn Sie Ihr SDK zum Zeitpunkt der Projekterstellung aktualisieren. Der Gradle-Build schlägt fehl. Wenn Sie die Maven- und Jcenter- Repositorys zu Ihrem build.gradle (Modul: App) hinzufügen, ist Ihr Problem gelöst.

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

Dies sind die beiden Zeilen, nach denen Sie hinzufügen müssen

apply plugin: 'com.android.application' 

So sieht Ihr Code nach dem Hinzufügen dieser beiden Zeilen aus

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
quelle
3

Der Fehler wird durch fehlende JAR-Dateien verursacht. Meine einfache Lösung besteht darin, alle Dateien, die nicht aufgelöst werden, in das C: \ Programme \ Android \ Android Studio \ gradle \ m2repository zu kopieren ... (Ihr Dateipfad kann unterschiedlich sein). Ich habe ungefähr 6 Abhängigkeiten, die nicht aufgelöst werden können, junit ist eine davon und die anderen sind com und org und javax. Da ich mich hinter einer Firewall befinde, scheint das Android Studio nicht darauf zuzugreifen, selbst wenn ich den Code für das Repository hinzugefügt habe. Ich ging zum Maven-Repository und lud alle Dateien herunter, die nicht aufgelöst werden können. Problem gelöst und die Gradle-Synchronisation ohne Fehler. Aber ich bin ein zertifizierter Neuling mit nur 1 Tag Erfahrung, daher weiß ich nicht, ob dies der richtige Weg ist.

Beispielfehler: com: squareup: javawriter: 2.1.1 kann nicht aufgelöst werden

Schritt 1: Ich habe einen Pfad C: \ Programme \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \ erstellt

Schritt 2: Ich habe alle JAR-Dateien aus dem Maven-Repository heruntergeladen: http://repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

Schritt 3: Ich habe alle JAR-Dateien manuell aus diesem Verzeichnis heruntergeladen

Schritt 4: Ich habe sie nach C: \ Programme \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \ kopiert

Ich wiederholte dies für alle Dateien, die nicht aufgelöst wurden, einschließlich des Junits.

Für junit ist hier das Verzeichnis, das ich erstellt habe: C: \ Programme \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12. Dann habe ich das junit-4.12.jar in dieses Verzeichnis kopiert und der Junit-Fehler ist verschwunden.

Roy Selim
quelle
3
  1. Stellen Sie sicher, dass Sie nicht hinter einem Proxy stehen!
  2. Wenn Sie Ihr Android Strudio für die Verwendung mit Proxy konfiguriert haben, müssen Sie diese Option in den Android Studio-Einstellungen deaktivieren
  3. Gehen Sie in der Android-Ansicht in Android Studio zu gradle.properties und löschen Sie die gesamte Proxy-Konfiguration
  4. Synchronisieren Sie jetzt Ihren Gradle
  5. Viel Spaß beim Codieren!
Catluc
quelle
2

ÄNDERN Sie Ihr build.gradle wie folgt, arbeiten Sie gut für mich:

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

hinzugefügt

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

zu android


quelle
2

Gehen Sie zu Datei -> Projektstruktur -> Abhängigkeit. Dort finden Sie -> junit: unit: 4.12

Auf der rechten Seite ..wählen Sie Kompilieren aus der Dropdown-Liste. Einfach .. es ist geschafft.

Referenzbild: http://i.stack.imgur.com/5WvS3.png

Reds 'VV

Vaisakh Venugopal
quelle
2

Meine Installation von Android Studio ist vollständig offline. Um diese Art von Problemen zu lösen, habe ich den Prozessmonitor verwendet. Es zeigte sich, dass einige Dateien in "Android Studio \ gradle \ m2repository" fehlen. Ich habe alle Dateien von heruntergeladen

  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/ (Ich kann nur zwei Links posten ... ;-))

und kopierte diese Dateien in "Android Studio \ gradle \ m2repository". Sie müssen die Struktur unter "m2repository" erstellen, da sie sich unter "maven2" befindet. Möglicherweise fehlen mehr Dateien, aber zu diesem Zeitpunkt ist zumindest der Gradle-Build fehlerfrei abgeschlossen.

Tasko
quelle
In all diesen Antworten war dies die einzige, die mein Problem tatsächlich gelöst hat (ich habe sie alle getestet!). Natürlich mussten für mich mehr Repositorys hinzugefügt werden, aber die Lösung war dieselbe. Das einzige, was nicht funktionierte, war "javax.annotation-api / 1.2", das ich nach einigen Tests aus den Abhängigkeiten entfernen musste. danke @Tasko
Lord Sepid
2

Ich hatte das gleiche Problem.

  • 1 Option: Laden Sie junit 4.12.jar herunter, kopieren Sie es in Ihren lib-Ordner und starten Sie android studio neu. Nutzen Sie müssen kein neues Projekt erstellen

  • 2 Option: Erstellen Sie ein neues Projekt mit Internetverbindung und kopieren Sie den gesamten Java- und XML-Code in das neu erstellte Projekt. Nutzen Sie dieses Problem wird dauerhaft gelöst

Akash Jaiswal
quelle
1

Entfernen Sie die Leitung testCompile 'junit:junit:4.12'

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

Danach synchronisieren Sie das Projekt erneut.

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

Hinweis: Entfernen Sie die Zeile testCompile 'junit: junit: 4.12'. Mein Problem wurde behoben.

Hasan Sabbir
quelle
1

Versuche dies:

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
quelle
1

Wenn Sie hinter einem Proxy stehen. Android Studio fügt Gradle einen Proxy für http hinzu, nicht jedoch für https. Fügen Sie gradle.properties Proxy-Einstellungen für https hinzu

KennyXu
quelle
1

Wenn Sie mit diesem Problem konfrontiert sind, können Sie es vollständig beheben, indem Sie Folgendes ändern:

build.gradle (Projekt: ...)

Ersetzen Sie diese

    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
quelle
1

Ich hatte das gleiche Problem, aber mit einem anderen Problem.

Mein anderes Problem war, dass der Gradle-Build zu langsam war!

Ich habe mein Problem damit gelöst

Wenn Sie mdew mögen, müssen Sie dies jedes Mal tun, wenn Sie Ihr Projekt erstellen, um dies zu tun

Wenn Sie also die Standardoption auf maven setzen möchten

Mach das:

Gehen Sie zum Ordner:

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

Öffnen Sie dann die build.gradle.ftlDatei mit Notepad ++ oder Notepad und ersetzen Sie alle jcenter()durch mavenCentral().

EDIT: Warum wird es abgestimmt? magst du es nicht

Anzeigename
quelle
1

Ich konnte nicht herausfinden, warum Android Studio nicht mit gradle synchronisiert wurde. Es stellte sich heraus, dass es mein VPN nicht mochte, also achten Sie darauf!

Ben
quelle
1

Gehen Sie zu Gehe zu "Datei" -> "Projektstruktur" -> "App" auf der Registerkarte "Eigenschaften". Geben Sie im Feld "Library Repository" " http://repo1.maven.org/maven2 " ein und drücken Sie "OK". Es wurde für mich so behoben. Jetzt wird das Projekt kompiliert.

MM
quelle
1

Stellen Sie einfach eine Verbindung zum Internet her, starten Sie Android Studio und öffnen Sie Ihr Projekt. Während der Gradle-Synchronisierung werden die Abhängigkeiten aus dem Internet heruntergeladen (alle JAR-Dateien). Das hat es für mich gelöst. Keine Bearbeitung in der Gradle-Datei, alles wurde von Android Studio automatisch durchgeführt. Verwenden von Android Studio 2.2 :)

Vergessen Sie auch nicht, Java JDK 1.x zu installieren (7 oder 8 funktionieren alle einwandfrei).

Rupanshu Raman
quelle
1

Ich würde gerne die Lösung vorschlagen, die perfekt zu meiner Situation passt:

  • Stellen Sie zunächst sicher, dass Sie hinzufügen

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

    in die build.gradle-Datei auf Projektebene innerhalb des buildscript {}Blocks

  • dann füge hinzu

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

    in die build.gradle-Datei auf Projektebene

  • Der nächste Punkt ist das Hinzufügen

    repositories {
        jcenter()
        mavenCentral()
    }

    auf Modulebene Build-Gradle im Inneren buildTypes{ }

iamtodor
quelle
1

Suchen Sie nach vielen Antworten, aber nichts funktioniert. Zum Glück hatte die einfache Lösung gefunden. Junit4.12 muss nicht kommentiert oder gelöscht werden. Das Problem ist hier:

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

Dieser Teil zeigt uns den Pfad, um nach der Datei in der Bibliothek in Ihrem Projekt zu suchen. Keine Ahnung warum, aber aus irgendeinem Grund ist es standardmäßig leer. In meinem Fall lautet der Pfad:

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

Natürlich können Sie diese Zeile im Code löschen, build.grandle(Module.app)aber Sie benötigen sie möglicherweise später. Hier ist die Lösung:

1 - Laden Sie junit-4.12.jar herunter oder kopieren Sie es aus Ihrem Android Studio-Ordner. Normalerweise sollte es dort sein. In meinem Fall war es hier:

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

in das oben genannte Verzeichnis (zu Ihrem Projekt)

2 - löschen & hinzufügen

Hier sollten Sie die Wurzel zu Ihrem junit-4.12.jar erneut eingeben

3 - wieder aufbauen

4 - arbeite hart

Arthur Zakharov
quelle