Kesalahan: (23, 17) Gagal menyelesaikan: junit: junit: 4.12

133

Mengapa setiap kali saya membuat proyek baru di Android Studio, selalu muncul dengan:

Kesalahan: (23, 17) Gagal menyelesaikan: junit: junit: 4.12?

Ketika saya menghapus testCompile 'junit:junit:4.12'dalam dependensi itu bukan masalah lagi.

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
sumber
Sepertinya Anda tidak memiliki toples di repositori Anda.
Jens
bagaimana cara menanganinya? Saya telah menginstal JDK 7 dan juga menambahkan path dalam variabel lingkungan
fathurzero
Repositori mana yang Anda gunakan untuk gradle.
Jens
1
Sepertinya toples itu hadir jcenter.bintray.com/junit/junit/4.12
Jens
1
Periksa jawaban baru saya: stackoverflow.com/a/38151747/5733853
VahidHoseini

Jawaban:

124

Saya memiliki masalah yang sama. Dipecahkan dengan menambahkan url untuk repositori yang hilang dalam build.gradlefile:

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

Itu dia.

mdew
sumber
Itu pasti memecahkan masalah bagi saya, jadi setidaknya saya bisa gradle-sync sekarang
revolusioner
16
apa akar penyebabnya?
Raulp
Ini memang memecahkan masalah, tetapi apa itu maven?
Sithu
1
Ini harus ditambahkan di atas buildTypes, jika tidak buildTypes kesalahan tidak dapat diterapkan ke groovy.lang.Closure akan terjadi.
Sithu
Bagaimana dengan jcenter()? Apakah perlu untuk menghilangkan jcenter()dari repositori?
Hosein Aqajani
34

Hapus saja "testCompile 'junit: junit: 4.12'" dari file 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'
 }

bekerja untuk saya dan saya Senang! :)

Ingat bahwa ini bukan jawaban sebenarnya dari pertanyaan ini. Saya menyebutkan ini karena ini berfungsi ketika Anda menghapus baris di atas.

Naveed Jamali
sumber
24

Buka File -> Struktur Proyek. Jendela berikut akan terbuka:

masukkan deskripsi gambar di sini

Dari sana:

  1. hapus perpustakaan junit (pilih junit dan tekan tombol "-" di bawah) dan
  2. tambahkan lagi (pilih "+" tombol di bawah, pilih "dep perpustakaan.", cari "junit", tekan OK). Tekan OK untuk menerapkan perubahan. Setelah sekitar 30 detik, sinkronisasi bertahap Anda akan berfungsi dengan baik.

Semoga berhasil juga untuk Anda: D

Hasaan Ali
sumber
3
Saya mencoba ini tetapi ketika saya pergi untuk menambahkan junit kembali di sana tidak ada ... wtf
Brew Dain
Untuk secara manual menambahkan junit ke proyek, buka file "build.gradle (Module: app)" dari sisi kiri. Tambahkan baris ini: testCompile 'junit: junit: 4.12' di akhir file di mana saja di antara blok dependensi dan akhirnya menyinkronkan proyek dengan masuk ke TOOLS> ANDROID> SYNC PROJECT DENGAN FILES
GRADLE
tidak bekerja untuk saya. setelah lagi menambahkan junit4.12 itu memberikan kesalahan yang sama seperti OP.
user13107
15

Itu tidak bisa mendapatkan perpustakaan junit.

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

Setelah menambahkan baris di atas di dalam blok android di file build.gradle, itu menyelesaikan masalah. Ini bisa jadi karena studio Android Anda tidak memiliki perpustakaan junit.

Mona
sumber
15

tambahkan repositori di file build.gradle Anda

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

Mungkin grader Anda tidak lengkap, saya sarankan Anda menambahkan yang berikut ini

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

tetapi dalam beberapa kasus tidak akan berfungsi, Anda dapat menghapusnya sepenuhnya dari dependensi Anda di gradle Anda.

Saya pikir itu akan baik-baik saja jika Anda menginstal ulang android studio dengan menghapus kondisi folder gradle yang ada di folder pengguna .gradle

VahidHoseini
sumber
8

Inilah yang saya lakukan untuk menyelesaikan masalah yang sama. Saya di belakang firewall, yang merupakan masalah yang sama seperti milik Anda saya kira. Jadi saya telah mencoba menghapus

testCompile 'junit:junit:4.12' line 

tapi itu tidak berhasil untukku. Saya mencoba menambahkan baris kode berikut:

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

Bahkan itu tidak berhasil untuk saya.

Saya mencoba menghapus (-) dan membaca (+) Junit4.12 dari dependensi perpustakaan di bawah Pengaturan Modul. Tetap saja itu tidak berhasil untuk saya.

Mencoba menyinkronkan dan membangun kembali proyek beberapa kali. Masih tidak bekerja untuk saya.

Akhirnya yang saya lakukan adalah mengunduh file Junit4.12.jar secara manual dari situs web mvnrepository. Saya meletakkan file jar ini di Android Workspace di bawah folder Project di dalam folder libs. Lalu pergi ke Pengaturan Modul> Tab Ketergantungan> (+)> Ketergantungan File> di bawah jendela jalur Sleect, rentangkan folder 'libs' dan Anda akan menemukan file Jar yang Anda salin di dalam sana. Pilih File dan klik 'OK' Sekarang hapus versi junit4.12 sebelumnya dari daftar dependensi.

Anda harus memiliki satu entri "libs\junit-4.12.jar"dalam daftar Ketergantungan. Sekarang klik 'OK'.

Sekarang Gradle akan membangun kembali proyek dan Anda harus baik-baik saja.

Semoga ini membantu!

Murtuza K
sumber
Saya baru saja membatalkan cache dan memulai ulang Android Studio.
Mohammedsalim Shivani
6

Saya akan mencoba everithing, tetapi satu-satunya hal yang membantu saya menyelesaikan masalah adalah menghapus baris

testCompile 'junit:junit:4.12'

dari appadel.

Ortal D
sumber
5

Itu terjadi karena HTTPS diblokir oleh Proxy. Cobalah untuk mengubah dari jcenter default (yang menggunakan HTTPS) menjadi HTTP.

Sebelum

repositories {
     jcenter()
}

Setelah

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

Ulangi langkah di atas untuk semua proyek.

allprojects {
  repositories {
    jcenter {
        url "http://jcenter.bintray.com/"
    }
  }
}
jafarmlp
sumber
Tidak berfungsi saat diproksi, lalu lintas HTTP berfungsi, dan lalu lintas HTTPS dilarang.
Diti
Hmm .. Ini yang saya coba jelaskan di posting saya. Secara default menggunakan HTTPS yang diblokir. Lihat Sebelum dan Sesudah
jafarmlp
4

Saya menerima kesalahan ini setelah membuat proyek baru. Dalam file build.gradle, saya memiliki ini:

jcenter()

Saya mengubahnya ke berikut ini dan kesalahan hilang:

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

Saya pikir ini karena saya berada di belakang firewall dan menentukan url seperti begitu mengubahnya dari https ke http

Al Lelopath
sumber
1
Terima kasih banyak . Perbaikan ini membantu saya
Android_programmer_office
4

Mungkin Anda berada di belakang proxy. Terjadi pada saya, menggunakan proyek pembangunan kembali tethering seluler saya (tanpa proxy) dan kesalahan hilang. Kembali ke koneksi asli (dengan proxy) dan membangun kembali tanpa kesalahan.

Asem Daaboul
sumber
Saya juga perlu menentukan proxy untuk gradle, tetapi saya tidak ingin menambahkan detail login saya ke setiap proyek. Jawabannya adalah menambahkan gradle.properties ke direktori pengguna saya. Info lebih lanjut dalam jawaban ini - stackoverflow.com/a/26524019/542629 .
walkingTarget
4

Apakah Anda menggunakan proxy ? Jika demikian, masalahnya dapat berupa konfigurasi jaringan yang hilang untuk https di gradle.propertiesfile Anda .

AndroidStudio secara otomatis menempatkan pengaturan proksi default Anda ke gradle.propertiesfile di proyek Anda, tetapi hanya untuk http dan lupa https.

Jadi pada dasarnya gradle.propertiesfile Anda harus mengandung konfigurasi http dan 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
sumber
3

Sebagian besar masalah ini akan datang ketika Anda memperbarui SDK Anda, pada saat pembuatan Gradle build gagal. Jika Anda menambahkan repositori maven dan jcenter ke build.gradle Anda (Modul: aplikasi) masalah Anda akan terpecahkan.

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

Ini adalah dua baris yang harus Anda tambahkan setelah

apply plugin: 'com.android.application' 

Ini adalah bagaimana kode Anda terlihat setelah menambahkan dua baris itu

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

Kesalahan ini disebabkan oleh file jar yang hilang. Solusi sederhana saya hanya dengan menyalin semua file yang tidak menyelesaikan ke C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository ... (path file Anda mungkin berbeda). Saya mendapat sekitar 6 dependensi yang tidak dapat diselesaikan, junit adalah salah satunya dan yang lainnya adalah com dan org dan javax. Karena saya berada di belakang firewall, bahkan jika saya menambahkan kode untuk repositori, Android Studio tampaknya tidak mengaksesnya. Saya pergi ke repositori maven dan mengunduh semua file yang tidak akan diselesaikan. Masalah terpecahkan dan sinkronisasi Gradle tanpa kesalahan. Tapi saya seorang pemula yang bersertifikat dengan pengalaman hanya 1 hari jadi saya tidak melakukannya jika ini cara yang tepat untuk melakukannya.

Contoh kesalahan: Tidak dapat menyelesaikan com: squareup: javawriter: 2.1.1

Langkah 1: Saya membuat jalur C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Langkah 2: Saya mengunduh semua file jar dari repositori maven: http://repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

Langkah 3: Saya mengunduh secara manual semua file .jar dari direktori ini

Langkah 4: Saya menyalinnya ke C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Saya mengulangi ini ke semua file yang tidak menyelesaikan termasuk junit.

Untuk junit, berikut adalah direktori yang saya buat: C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12 dan kemudian saya menyalin junit-4.12.jar di dalam direktori ini dan kesalahan junit hilang.

Roy Selim
sumber
3
  1. Pastikan Anda tidak berada di belakang proxy!
  2. Jika Anda mengonfigurasi Android Strudio agar berfungsi dengan proxy, pastikan untuk menonaktifkan opsi itu di bawah preferensi Android Studio
  3. Buka gradle.properties di bawah tampilan Android di Android Studio dan hapus semua konfigurasi proxy
  4. Sinkronkan gradle Anda sekarang
  5. Nikmati pengkodean!
Catluc
sumber
2

GANTI build.gradle Anda seperti ini, bekerja baik untuk saya:

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

ditambahkan

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

untuk android


sumber
2

Pergi ke File -> Struktur Proyek -> ketergantungan Di sana Anda akan menemukan -> junit: unit: 4.12

Di sisi kanan .. pilih kompilasi dari drop down. Sederhana .. sudah selesai.

Gambar Referensi: http://i.stack.imgur.com/5WvS3.png

VV Reds

Vaisakh Venugopal
sumber
2

Instalasi Android Studio saya sepenuhnya offline. Untuk mengatasi masalah semacam ini saya telah menggunakan Monitor Proses. Itu menunjukkan bahwa beberapa file hilang dalam "Android Studio \ gradle \ m2repository". Saya telah mengunduh semua file dari

  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/ (Saya hanya dapat memposting dua tautan ... ;-))

dan menyalin file-file ini di "Android Studio \ gradle \ m2repository". Anda harus membuat struktur di bawah "m2repository" seperti di bawah "maven2". Mungkin ada lebih banyak file yang hilang, tetapi saat ini setidaknya Gradle build selesai tanpa kesalahan.

Tasko
sumber
dalam semua jawaban ini, ini adalah satu-satunya yang benar-benar menyelesaikan masalah saya (saya menguji semuanya!). tentu saja bagi saya perlu lebih banyak repositori untuk ditambahkan tetapi solusinya sama. satu-satunya yang tidak berfungsi adalah "javax.annotation-api / 1.2" yang setelah beberapa tes saya harus menghapusnya dari dependensi. terima kasih @Tasko
Lord Sepid
2

Saya mengalami masalah yang sama.

  • 1 pilihan: Unduh junit 4.12.jar dan salin di folder lib Anda dan restart android studio. Manfaat Anda tidak harus membuat proyek baru

  • Opsi 2: Buat proyek baru yang memiliki koneksi internet dan salin semua kode java dan XML di proyek yang baru dibuat. Manfaat masalah ini akan dipecahkan permanen

Akash Jaiswal
sumber
1

Hapus garis testCompile 'junit:junit:4.12'

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

Setelah itu sinkronkan proyek lagi.

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

Catatan: Hapus testCompile 'junit: junit: 4.12' baris telah menyelesaikan masalah saya.

hasan sabbir
sumber
1

Coba ini:

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

Jika Anda berada di belakang proxy. Android Studio akan menambahkan proxy untuk http ke Gradle, tetapi tidak untuk https. Tambahkan pengaturan proxy untuk https ke gradle.properties

KennyXu
sumber
1

jika Anda menghadapi masalah ini, Anda dapat menyelesaikannya dengan mengubah:

build.gradle (proyek: ...)

ganti ini

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

Saya memiliki masalah yang sama, tetapi dengan masalah lain.

Masalah saya yang lain adalah pembangunan Gradle terlalu lambat!

Saya menyelesaikan masalah saya dengan melakukan iniL

Jika Anda suka mdew, Anda perlu melakukan ini kapan pun Anda membuat proyek untuk melakukannya

Jadi jika Anda ingin mengatur opsi default ke pakar

Melakukan hal ini:

Buka folder:

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

Kemudian buka build.gradle.ftlfile dengan notepad ++ atau notepad dan ganti semua jcenter()dengan mavenCentral().

EDIT: Mengapa turun memilih? kamu tidak suka itu

Nama tampilan
sumber
1

Saya tidak tahu mengapa Android Studio tidak disinkronkan dengan gradle. Ternyata itu tidak suka VPN saya, jadi perhatikan itu!

Ben
sumber
1

Pergi ke Pergi ke "File" -> "Struktur Proyek" -> "App" Pada tab "properties". Dalam "Perpustakaan Repository" bidang put ' http://repo1.maven.org/maven2 ' kemudian tekan Ok. Itu diperbaiki seperti itu untuk saya. Sekarang proyek sedang dikompilasi.

MM
sumber
1

Cukup sambungkan ke Internet dan mulai Android Studio dan buka proyek Anda. Sementara Gradle Sync itu akan mengunduh dependensi dari Internet (Semua File JAR). Ini menyelesaikannya untuk saya. Tidak ada pengeditan dalam file Gradle, semua dilakukan oleh Android Studio secara otomatis. Menggunakan Android Studio 2.2 :)

Juga jangan lupa untuk menginstal Java JDK 1.x (7 atau 8 semuanya berfungsi dengan baik).

Rupanshu Raman
sumber
1

Saya ingin menyarankan solusi, yang sempurna cocok untuk situasi saya:

  • pada awalnya, pastikan tambahkan

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

    ke file build.gradle tingkat proyek di dalam buildscript {}blok

  • lalu tambahkan

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

    ke file build.gradle tingkat proyek

  • titik selanjutnya adalah menambahkan

    repositories {
        jcenter()
        mavenCentral()
    }

    untuk tingkat-tingkat build-module di dalamnya buildTypes{ }

iamtodor
sumber
1

Lihatlah banyak jawaban tetapi tidak ada yang berhasil. Untungnya sudah menemukan solusi yang mudah. Tidak perlu berkomentar junit4.12 atau menghapusnya. Masalahnya ada di sini:

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

Bagian ini menunjukkan kepada kita jalan untuk mencari file di perpustakaan di proyek Anda. Tidak tahu mengapa tetapi karena alasan tertentu secara default kosong. Dalam kasus saya, jalannya adalah:

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

Tentu Anda dapat menghapus baris ini dalam kode build.grandle(Module.app)tetapi Anda mungkin membutuhkannya nanti. Ini solusinya:

1 - unduh junit-4.12.jar atau salin dari folder Android Studio Anda, biasanya itu harus ada di sana. Dalam kasus saya, itu ada di sini:

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

ke direktori yang disebutkan di atas (ke proyek Anda)

2 - hapus & tambah

di sini Anda harus memasukkan kembali root ke junit-4.12.jar Anda

3 - membangun kembali

4 - bekerja keras

Arthur Zakharov
sumber