Hata: (23, 17) Çözümlenemedi: junit: junit: 4.12


134

Neden Android Studio'da her yeni proje oluşturduğumda her zaman ortaya çıkıyor:

Hata: (23, 17) Çözümlenemedi: junit: junit: 4.12?

testCompile 'junit:junit:4.12'Bağımlılıkları kaldırdığımda artık sorun değil.

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

Kavanozun deponuzda olmadığı anlaşılıyor.
Jens

JDK 7'yi kurdum ve ayrıca yolu ortam değişkenlerine
ekledim

Gradle için hangi depoyu kullanıyorsunuz?
Jens


1
Yeni cevabımı kontrol edin: stackoverflow.com/a/38151747/5733853
VahidHoseini 01

Yanıtlar:


124

Ben de aynı sorunu yaşadım. build.gradleDosyadaki eksik depo için url eklenerek çözüldü :

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

Bu kadar.


Bu benim için sorunu kesinlikle çözdü, bu yüzden en azından şimdi kademeli senkronizasyon yapabiliyorum
devrim niteliğinde

16
bunun temel nedeni neydi?
Raulp

Bu sorunu çözdü, ama bu mavennedir?
Sithu

1
Yukarıya eklenmelidir buildTypes, aksi takdirde buildTypes hatası groovy.lang.Closure'a uygulanamaz .
Sithu

Peki ya jcenter()? Depolardan çıkarmak gerekli jcenter()midir?
Hosein Aqajani

34

Build.gradle dosyasından "testCompile 'junit: junit: 4.12'" dosyasını kaldırın:

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

benim için çalıştı ve ben mutluyum! :)

Bunun bu sorunun gerçek cevabı olmadığını unutmayın. Bundan bahsetmiştim çünkü yukarıdaki satırları kaldırdığınızda çalışıyor.


24

Dosya -> Proje Yapısı'na gidin. Aşağıdaki pencere açılacaktır:

görüntü açıklamasını buraya girin

Buradan:

  1. junit kitaplığını kaldırın (junit'i seçin ve aşağıdaki "-" düğmesine basın) ve
  2. tekrar ekleyin (aşağıdaki "+" düğmesini seçin, "kütüphane dep." öğesini seçin, "junit" araması yapın, Tamam'a basın). Değişiklikleri uygulamak için Tamam'a basın. Yaklaşık 30 saniye sonra gradle senkronizasyonunuz düzgün çalışacaktır.

Umarım sizin için de işe yarar: D


3
Bunu denedim ama junit'i geri eklemeye gittiğimde orada değildi ... wtf
Brew Dain

Junit'i projeye manuel olarak eklemek için sol taraftan "build.gradle (Modül: app)" dosyasını açın. Bu satırı ekleyin: testCompile 'junit: junit: 4.12' dosyanın sonunda bağımlılıklar bloğu arasında herhangi bir yerde ve son olarak ARAÇLAR> ANDROID> GRADLE DOSYALARLA SENKRON PROJESİ
Hasaan Ali,

benim için çalışmadı. junit4.12'yi tekrar ekledikten sonra OP ile aynı hatayı verdi.
user13107

15

Junit kütüphanesi alınamıyor.

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

Build.gradle dosyasında android bloğunun içine yukarıdaki satırı ekledikten sonra sorunu çözdü. Bunun nedeni, Android stüdyonuzun junit kitaplığına sahip olmaması olabilir.


15

build.gradle dosyanıza depo ekleyin

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

13

Muhtemelen notunuz eksik, aşağıdakileri eklemenizi tavsiye ederim

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

ancak bazı durumlarda işe yaramazsa, onu gradle'ınızdaki bağımlılıklarınızdan tamamen silebilirsiniz.

Android stüdyosunu kullanıcı klasöründe bulunan gradle klasörünü silme durumu ile yeniden yüklerseniz tamam olacağını düşünüyorum. .gradle


8

İşte aynı sorunu çözmek için yaptığım şey. Bir güvenlik duvarının arkasındayım, sanırım sizinkiyle aynı sorun. Bu yüzden kaldırmayı denedim

testCompile 'junit:junit:4.12' line 

ama bu benim için işe yaramadı. Aşağıdaki kod satırlarını eklemeyi denedim:

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

Bu bile benim için işe yaramadı.

Modül Ayarları altındaki kitaplık bağımlılıklarından (-) kaldırmayı ve (+) Junit4.12'yi okumayı denedim. Yine de bu benim için işe yaramadı.

Eşitlemeyi ve yeniden oluşturmayı birkaç kez denedim. Hala benim için işe yaramadı.

Sonunda yaptığım şey Junit4.12.jar dosyasını mvnrepository web sitesinden manuel olarak indirmekti. Bu jar dosyasını libs klasörü içindeki Proje klasörünün altındaki Android Çalışma Alanına koydum. Ardından Modül Ayarları> Bağımlılıklar Sekmesi> (+)> Dosya Bağımlılığı> Sleect yolu penceresine gidin, 'libs' klasörünü genişletin ve orada kopyaladığınız Jar dosyasını bulacaksınız. Dosyayı seçin ve 'Tamam'ı tıklayın. Şimdi junit4.12'nin önceki sürümünü bağımlılıklar listesinden kaldırın.

"libs\junit-4.12.jar"Bağımlılıklar listesinde bir girişiniz olmalıdır . Şimdi 'Tamam'ı tıklayın.

Şimdi Gradle projeyi yeniden inşa edecek ve gitmekte fayda var.

Bu yardımcı olur umarım!


Önbelleği geçersiz kıldım ve Android Studio'yu yeniden başlattım.
Muhammedsalim Shivani

6

Her şeyi denedim, ancak sorunu çözmeme yardımcı olan tek şey satırı silmekti

testCompile 'junit:junit:4.12'

gradel uygulamasından.


5

HTTPS Proxy tarafından engellendiği için olur. Varsayılan jcenter'dan (HTTPS kullanan) HTTP'ye geçmeyi deneyin.

Önce

repositories {
     jcenter()
}

Sonra

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

Tüm projeler için yukarıdaki adımı tekrarlayın.

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

Proxy kullanıldığında, HTTP trafiği çalışırken ve HTTPS trafiği yasaklandığında çalışmaz.
Diti

Hmm .. Yazımda anlatmaya çalıştığım şey bu. Varsayılan olarak, engellenmiş olan HTTPS'yi kullanır. Önce ve Sonra
jafarmlp

4

Bu hatayı yeni bir proje oluşturduktan sonra aldım. Build.gradle dosyasında şuna sahiptim:

jcenter()

Bunu şu şekilde değiştirdim ve hata kayboldu:

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

Sanırım bunun nedeni bir güvenlik duvarının arkasındayım ve url'yi böyle belirtmek onu https'den http'ye değiştiriyor


1
Çok teşekkürler . Bu düzeltme bana yardımcı oldu
Android_programmer_office

4

Muhtemelen vekaletnamenin arkasındasın. Bana oldu, mobil tethering (proxy yok) yeniden oluşturma projemi kullandım ve hata ortadan kalktı. Orijinal bağlantıya (proxy ile) geri döndü ve hata olmadan yeniden oluşturuldu.


Ayrıca gradle için bir proxy belirtmem gerekiyordu, ancak oturum açma bilgilerimi her projeye eklemek istemedim. Cevap, kullanıcı dizinime bir gradle.properties eklemekti. Bu cevapta daha fazla bilgi - stackoverflow.com/a/26524019/542629 .
walkingTarget

4

Proxy kullanıyor musunuz ? Öyleyse, sorun için ağ yapılandırmasını eksik olabilir https sizin de gradle.propertiesdosyaya.

AndroidStudio, varsayılan proxy ayarlarınızı gradle.propertiesprojenize otomatik olarak yerleştirir , ancak yalnızca http için ve https'yi unutur.

Yani temelde gradle.propertiesdosyanızın hem http hem de https yapılandırması içermesi gerekir:

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

Çoğunlukla bu sorun, proje oluşturma sırasında SDK'nızı güncellediğinizde, Gradle derlemesi başarısız olduğunda ortaya çıkar. Eğer eklerseniz maven ve jcenter sizin için depoları build.gradle (Modül: app) sorunu çözüldü olacaktır.

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

Bunlar sonrasına eklemeniz gereken iki satırdır

apply plugin: 'com.android.application' 

Bu iki satırı ekledikten sonra kodunuz böyle görünüyor

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

Hata, eksik jar dosyalarından kaynaklanır. Benim basit çözümüm, C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository'ye çözümlenmeyen tüm dosyaları kopyalayarak ... (dosya yolunuz farklı olabilir). Çözülemeyen yaklaşık 6 bağımlılığım var, junit bunlardan biri ve diğerleri com, org ve javax. Bir güvenlik duvarının arkasında olduğum için, deponun kodunu eklesem bile, Android Studio ona erişmiyor gibi görünüyor. Maven deposuna gittim ve çözülmeyecek tüm dosyaları indirdim. Sorun çözüldü ve Gradle hatasız eşitlendi. Ama ben sadece 1 günlük deneyime sahip sertifikalı bir acemiyim, bu yüzden bunu yapmanın doğru yolu buysa değilim.

Örnek hata: com: squareup: javawriter: 2.1.1 çözümlenemiyor

Adım 1: C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \ yolunu oluşturdum

Adım 2: Tüm jar dosyalarını maven deposundan indirdim: http://repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

3. Adım: Tüm .jar dosyalarını bu dizinden manuel olarak indirdim

Adım 4: Onları C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \ klasörüne kopyaladım

Bunu junit dahil çözülmeyen tüm dosyalara tekrarladım.

Junit için oluşturduğum dizin şu şekildedir: C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12 ve ardından junit-4.12.jar dosyasını bu dizine kopyaladım ve junit hatası ortadan kalktı.


3
  1. Bir vekilin arkasında olmadığınızdan emin olun!
  2. Android Strudio'nuzu proxy ile çalışacak şekilde yapılandırdıysanız, Android Studio tercihleri ​​altında bu seçeneği devre dışı bıraktığınızdan emin olun.
  3. Android Studio'da Android görünümü altında gradle.properties adresine gidin ve tüm proxy yapılandırmasını silin
  4. Gradle'ınızı şimdi senkronize edin
  5. Kodlamanın tadını çıkarın!

2

Build.gradle'ınızı bununla değiştirin, benim için iyi çalışın:

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

katma

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

için android


2

Dosyaya Git -> Proje Yapısı -> bağımlılık Orada bulacaksın -> junit: unit: 4.12

Sağ tarafta .. açılır listeden derlemeyi seçin. Basit .. bitti.

Referans görüntü: http://i.stack.imgur.com/5WvS3.png

Reds 'VV


2

Android Studio yüklemem tamamen çevrimdışı. Bu tür sorunları çözmek için Process Monitor kullandım. "Android Studio \ gradle \ m2repository" içinde birkaç dosyanın eksik olduğunu gösterdi. Tüm dosyaları şuradan indirdim

  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/ (Sadece iki bağlantı gönderebilirim ... ;-))

ve bu dosyaları "Android Studio \ gradle \ m2repository" içine kopyaladı. "M2repository" altındaki yapıyı "maven2" nin altında olduğu gibi oluşturmanız gerekir. Belki daha fazla eksik dosya vardır, ancak şu anda en azından Gradle derlemesi hatasız tamamlanmıştır.


tüm bu cevaplarda, problemimi çözen tek cevap buydu (hepsini test ettim!). Tabi ki benim için daha fazla deponun eklenmesi gerekiyordu ama çözüm aynıydı. işe yaramayan tek "javax.annotation-api / 1.2" idi, birkaç testten sonra onu bağımlılıklardan kaldırmak zorunda kaldım. teşekkürler @Tasko
Lord Sepid

2

Ben de aynı sorunu yaşıyordum.

  • 1 seçenek: junit 4.12.jar dosyasını indirin ve lib klasörünüze kopyalayın ve android stüdyosunu yeniden başlatın. Fayda, yeni bir proje oluşturmanıza gerek yok

  • 2 seçenek: İnternet bağlantısı olan yeni bir proje oluşturun ve yeni oluşturulan projedeki tüm java ve XML kodunu kopyalayın. Fayda bu problem kalıcı olarak çözülecek


1

Çizgiyi kaldır testCompile 'junit:junit:4.12'

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

Bundan sonra projeyi tekrar senkronize edin.


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

Not: testCompile 'junit: junit: 4.12' satırını kaldırın sorunum çözüldü.


1

Bunu dene:

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

Bir vekilin arkasındaysanız. Android Studio, Gradle'a http için proxy ekleyecek, ancak https için olmayacak. Gradle.properties'e https için proxy ayarları ekleyin


1

Bu sorunla karşılaştıysanız, değiştirerek tamamen çözebilirsiniz:

build.gradle (proje: ...)

bunu değiştir

    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

Aynı sorunu yaşadım ama başka bir sorunla.

Diğer sorunum, Gradle yapısının çok yavaş olmasıydı!

Bunu yaparak sorunumu çözdüm

Eğer mdew'i seviyorsanız, bunu yapmak için projenizi oluştururken buna ihtiyacınız var.

Yani varsayılan seçeneği maven olarak ayarlamak istiyorsanız

Bunu yap:

Klasöre gidin:

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

Ardından build.gradle.ftldosyayı notepad ++ veya notepad ile açın ve hepsini jcenter()ile değiştirin mavenCentral().

DÜZENLEME: Neden düşüşü oylandı? beğenmedin mi


1

Android Studio'nun neden gradle ile senkronize olmadığını anlayamadım. VPN'imi beğenmediği ortaya çıktı, o yüzden dikkatli olun!


1

"Özellikler" sekmesinde "Dosya" -> "Proje Yapısı" -> "Uygulama" seçeneğine gidin. "Library Repository" alanına ' http://repo1.maven.org/maven2 ' yazıp Tamam'a basın. Benim için böyle düzeltildi. Şimdi proje derleniyor.


1

İnternete bağlanın ve Android Studio'yu başlatın ve projenizi açın. Gradle Sync sırasında, bağımlılıkları İnternet'ten indirecektir (Tüm JAR Dosyaları). Bu benim için çözdü. Gradle dosyasında Düzenleme Yok, hepsi Android Studio tarafından Otomatik olarak yapıldı. Android Studio 2.2'yi Kullanma :)

Ayrıca Java JDK 1.x'i yüklemeyi de unutmayın (7 veya 8'in tümü sorunsuz çalışıyor).


1

Durumuma uygun mükemmel bir çözüm önermeyi çok isterim:

  • ilk başta mutlaka ekleyin

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

    buildscript {}bloğun içindeki proje düzeyinde build.gradle dosyasına

  • sonra Ekle

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

    proje düzeyinde build.gradle dosyasına

  • sonraki nokta eklemek

    repositories {
        jcenter()
        mavenCentral()
    }

    modül düzeyinde derleme içine buildTypes{ }


1

Birçok cevaba bakın ama hiçbir şey işe yaramıyor. Neyse ki kolay çözümü bulmuştu. Junit4.12'ye yorum yapmanıza veya silmenize gerek yok. Sorun burada:

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

Bu bölüm bize projenizin kütüphanesinde dosyayı aramanın yolunu gösterir. Neden olduğuna dair hiçbir fikrim yok, ancak bazı nedenlerden dolayı varsayılan olarak boş. Benim durumumda yol:

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

Elbette bu satırı kodda silebilirsiniz build.grandle(Module.app) ancak daha sonra ihtiyacınız olabilir. İşte çözüm:

1 - junit-4.12.jar dosyasını indirin veya Android Studio klasörünüzden kopyalayın, normalde orada olması gerekir. Benim durumumda buradaydı:

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

yukarıda belirtilen dizine (projenize)

2 - sil ve ekle

burada junit-4.12.jar dosyanızın kökü yeniden girmelisiniz

3 - yeniden inşa

4 - sıkı çalış

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.