Помилка: (23, 17) Не вдалося вирішити: junit: junit: 4.12


133

Чому так, що кожного разу, коли я створюю новий проект в Android Studio, це завжди приходить:

Помилка: (23, 17) Не вдалося вирішити: junit: junit: 4.12?

Коли я знімаюсь testCompile 'junit:junit:4.12'із залежностей, це вже не проблема.

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

Схоже, у вас є банка не у вашому сховищі.
Єнс

як з цим
боротися

Яке сховище ви використовуєте для Gradle.
Єнс

1
Виглядає, що баночки присутні jcenter.bintray.com/junit/junit/4.12
Jens

1
Перевірте мій новий відповідь: stackoverflow.com/a/38151747/5733853
VahidHoseini

Відповіді:


124

У мене була така ж проблема. Вирішено шляхом додавання URL-адреси для відсутнього сховища у build.gradleфайлі:

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

Це воно.


Це, безумовно, вирішило проблему для мене, так що принаймні я можу граді-синхронізувати зараз
революційний

16
що було першопричиною цього?
Раулп

Це вирішило проблему, але що це maven?
Сіту

1
Його слід додати вище buildTypes, інакше помилки buildTypes не можна застосувати до groovy.lang.Закриття буде відбуватися.
Сіту

Про що jcenter()? Чи потрібно видаляти jcenter()з сховищ?
Хосейн Акаджані

34

Просто видаліть "testCompile 'junit: junit: 4.12'" з файлу 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'
 }

працював на мене, і я щасливий! :)

Пам'ятайте, що це не фактична відповідь на це питання. Я згадував про це, оскільки він працює, коли ви видаляєте вище рядки.


24

Перейдіть у меню Файл -> Структура проекту. Відкриється наступне вікно:

введіть тут опис зображення

Звідти:

  1. видаліть бібліотеку Джуніт (виберіть Джуніт і натисніть кнопку "-" внизу) і
  2. додайте його знову (натисніть кнопку "+" внизу, виберіть "бібліотека.", знайдіть "Джуніт", натисніть ОК). Натисніть ОК, щоб застосувати зміни. Приблизно через 30 секунд синхронізація з Gradle повинна працювати нормально.

Сподіваюся, він теж працює для вас: D


3
Я спробував це, але коли я пішов додати Джуніт назад, його там не було ... wtf
Brew Dain

Щоб додати проект вручну до проекту, відкрийте файл "build.gradle (Модуль: додаток)" з лівого боку. Додайте цей рядок: testCompile 'junit: junit: 4.12' в кінці файлу в будь-якому місці між блоком залежностей і, нарешті, синхронізуйте проект, перейшовши на TOOLS> ANDROID> SYNC PROJECT AND GRADLE FILES
Hasaan Ali

не працював для мене. після повторного додавання junit4.12 він дав таку ж помилку, що і OP.
користувач13107

15

Це не в змозі отримати бібліотеку Джуніт

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

Після додавання вищезазначеного рядка всередині блоку Android у файл build.gradle він вирішив проблему. Це може бути через те, що у вашій студії Android немає бібліотеки для фізичних осіб.


15

додайте сховище у файл build.gradle

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

13

Можливо, ваш градул неповний, я рекомендую вам додати наступне

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

але в деяких випадках не вийде, ви можете повністю видалити його з ваших залежностей у вашому градусі.

Я думаю, що буде нормально, якщо ви перевстановите андроїд-студію із умовою видалення папки gradle, яка знаходиться в папці користувача .gradle


8

Ось що я зробив, щоб вирішити ту саму проблему. Я за брандмауером, це те саме питання, що і ваше. Тому я спробував видалити

testCompile 'junit:junit:4.12' line 

але це не працювало для мене. Я спробував додати нижче рядки коду:

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

Навіть це для мене не вийшло.

Я спробував видалити (-) та прочитати (+) Junit4.12 із залежностей бібліотеки в Налаштуваннях модуля. Все одно це не працювало для мене.

Спробував синхронізувати та відновити проект кілька разів. Ще не працювали для мене.

Нарешті, я зробив, щоб вручну завантажити файл Junit4.12.jar з веб-сайту mvnrepository. Я поміщаю цей файл jar у робочу область Androids під папкою Project всередині папки libs. Потім перейдіть до розділу Налаштування модуля> Вкладка залежностей> (+)> Залежність файлів> у вікні Шлях вибору, розгорніть папку 'libs', і ви знайдете файл Jar, який ви скопіювали всередину. Виберіть файл та натисніть «ОК» Тепер видаліть попередню версію junit4.12 зі списку залежностей.

У вас повинен бути один запис "libs\junit-4.12.jar"у списку залежностей. Тепер натисніть «ОК».

Тепер Gradle відновить проект, і вам слід добре піти.

Сподіваюся, це допомагає!


Я просто визнав недійсним кеш і перезапустив Android Studio.
Мухаммедсалім Шивані

6

Я спробував коли-небудь, але єдине, що допомагає мені вирішити проблему, - це видалити рядок

testCompile 'junit:junit:4.12'

від додатка гредель.


5

Це відбувається тому, що HTTPS блокується проксі. Спробуйте змінити стандартний jcenter (для якого використовується HTTPS) на HTTP.

До цього

repositories {
     jcenter()
}

Після

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

Повторіть вищевказаний крок для всіх проектів.

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

Не працює, коли проксі, HTTP-трафік працює, а трафік HTTPS заборонений.
Діті

Хм .. Це я намагався пояснити у своєму дописі. За замовчуванням він використовує HTTPS, який заблокований. Дивіться до і після
jafarmlp

4

Я отримав цю помилку після створення нового проекту. У файлі build.gradle у мене було таке:

jcenter()

Я змінюю її на наступну, і помилка зникла:

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

Я думаю, це тому, що я стою за брандмауером і вказую, що URL-адреса подібно до цього змінює його з https на http


1
Дуже дякую . Це виправлення допомогло мені
Android_programmer_office

4

Ймовірно, ви за проксі. Сталося зі мною, я використав проект відновлення мобільних пристроїв (без проксі) і помилка зникла. Повертається до вихідного з'єднання (з проксі) та відновлюється без помилок.


Мені також потрібно було вказати проксі для gradle, але я не хотів додавати свої дані для входу до кожного проекту. Відповідь полягала в тому, щоб додати gradle.properties до мого каталогу користувачів. Більше інформації у цій відповіді - stackoverflow.com/a/26524019/542629 .
walkTarget

4

Ви використовуєте проксі ? Якщо так, проблема може полягати у відсутності конфігурації мережі для https у вашому gradle.propertiesфайлі.

AndroidStudio автоматично встановлює налаштування проксі-сервера за замовчуванням для gradle.propertiesподання у ваш проект, але лише для http та забуває https.

Отже, ваш gradle.propertiesфайл повинен містити конфігурацію http і 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

Здебільшого ця проблема з’явиться коли ви оновлюєте свій SDK, під час створення проекту збірка Gradle не вдається. Якщо ви додасте сховища maven та jcenter до свого build.gradle (Модуль: додаток), ваша проблема буде вирішена.

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

Це два рядки, які ви повинні додати після

apply plugin: 'com.android.application' 

Ось так виглядає ваш код після додавання цих двох рядків

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

Помилка викликана відсутніми файлами jar. Моє просте рішення - просто скопіювати всі файли, які не вирішуються в C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository ... (шлях вашого файлу може бути різним). У мене було 6 залежностей, які неможливо вирішити, Джуніт - одна з них, а інші - com, org та javax. Оскільки я за брандмауером, навіть якщо я додав код для сховища, Android Studio, схоже, не має до нього доступу. Я зайшов до сховища Maven і завантажив усі файли, які не вирішуються. Проблема вирішена та синхронізація Gradle без помилок. Але я сертифікований новачок, який має лише 1 день досвіду, тому я цього не роблю, якщо це правильний спосіб зробити це.

Приклад помилки: Не вдається вирішити com: squareup: javawriter: 2.1.1

Крок 1: Я створив шлях C: \ Програмні файли \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Крок 2: Я завантажив усі файли jar із сховища Maven: http://repo1.maven.org/maven2/com/squareup/javawriter/2.1.1/

Крок 3: Я вручну завантажив усі файли .jar з цього каталогу

Крок 4: Я скопіював їх у C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ squareup \ javawriter \ 2.1.1 \

Я повторив це для всіх файлів, які не вирішили, включаючи junit.

Для junit ось каталог, який я створив: C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ junit \ junit \ 4.12, а потім скопіював junit-4.12.jar всередині цього каталогу, і помилка junit зникла.


3
  1. Будьте впевнені, що ви не за проксі-сервером!
  2. Якщо ви налаштували Android Strudio для роботи з проксі, не забудьте відключити цю опцію відповідно до налаштувань Android Studio
  3. Перейдіть на gradle.properties під переглядом Android в Android Studio та видаліть усю конфігурацію проксі
  4. Синхронізуйте градус зараз
  5. Насолоджуйтесь кодування!

2

ЗМІНУЙТЕ свій build.gradle, як це працює, для мене добре працює:

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

додано

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

до android


2

Перейдіть до файлу -> Структура проекту -> залежність Там ви знайдете -> junit: unit: 4.12

У правій частині .. виберіть компіляцію зі спадного меню. Просте .. зроблено.

Довідкове зображення: http://i.stack.imgur.com/5WvS3.png

Червоні В.В.


2

Моя установка Android Studio повністю відключена. Для вирішення подібних проблем я використовував Монітор процесів. Він показав, що декілька файлів відсутні у "Android Studio \ gradle \ m2repository". Я завантажив усі файли з

  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/ (я можу розмістити лише два посилання ... ;-))

і скопіював ці файли в "Android Studio \ gradle \ m2repository". Ви повинні створити структуру нижче "m2repository", оскільки вона знаходиться нижче "maven2". Можливо, є ще відсутні файли, але в цей час збірка Gradle принаймні закінчена без помилок.


в усіх цих відповідях це було єдине, що фактично вирішило мою проблему (я перевірив їх усіх!). звичайно, для мене потрібно було додати більше сховищ, але рішення було те саме. єдиний, який не працював, був "javax.annotation-api / 1.2", що після кількох тестів мені довелося зняти його із залежностей. дякую @Tasko
Lord Sepid

2

У мене була така ж проблема.

  • 1 варіант: Завантажте junit 4.12.jar та скопіюйте її у папку lib та перезапустіть android studio. Користь вам не потрібно створювати жодного нового проекту

  • 2 варіант: Створіть новий проект із підключенням до Інтернету та скопіюйте весь Java-код та XML-код у новостворений проект. Користь ця проблема буде вирішена постійно


1

Видаліть рядок testCompile 'junit:junit:4.12'

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

Після цього знову синхронізуйте проект.


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

Примітка: Видаліть рядок testCompile 'junit: junit: 4.12' мою проблему вирішено.


1

Спробуйте це:

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

Якщо ви стоїте за проксі-сервером. Android Studio додасть проксі для http до Gradle, але не для https. Додайте параметри проксі для https до gradle.properties


1

якщо ви зіткнулися з цією проблемою, ви можете повністю її вирішити, змінивши:

build.gradle (проект: ...)

замініть це

    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

У мене була та сама проблема, але з іншою проблемою.

Моя інша проблема полягала в тому, що збірка Gradle була надто повільною!

Я вирішив свою проблему, зробивши цеL

Якщо вам подобається mdew, вам це потрібно в будь-який час, коли ви створюєте свій проект, щоб це зробити

Тож якщо ви хочете встановити параметр за замовчуванням maven

Зробити це:

Перейдіть до папки:

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

Потім відкрийте build.gradle.ftlфайл із блокнотом ++ або блокнотом і замініть все jcenter()на mavenCentral().

EDIT: Чому за його згортання проголосували? вам це не подобається?


1

Я не міг зрозуміти, чому Android Studio не синхронізується з gradle. Виявилося, що це не сподобалось моєму VPN, тому слідкуйте за цим!


1

Перейдіть до "Файл" -> "Структура проекту" -> "Додаток" На вкладці "Властивості". У «Бібліотека Repository» поле пут « http://repo1.maven.org/maven2 » , потім натисніть кнопку ОК. Для мене це було виправлено. Зараз проект збирається.


1

Просто підключіться до Інтернету та запустіть Android Studio та відкрийте проект. Поки Gradle Sync буде завантажувати залежності з Інтернету (Усі файли JAR). Це вирішило це для мене. Немає редагування у файлі Gradle, все це робило Android Studio автоматично. Використання Android Studio 2.2 :)

Також не забудьте встановити Java JDK 1.x (7 або 8 все працює чудово).


1

Я хотів би запропонувати рішення, яке ідеально підходить для моєї ситуації:

  • спочатку обов’язково додайте

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

    в build.gradle файл на рівні проекту всередині buildscript {}блоку

  • потім додайте

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

    до файлу build.gradle на рівні проекту

  • наступний пункт - додавання

    repositories {
        jcenter()
        mavenCentral()
    }

    до модульного рівня-build-gradle всередині buildTypes{ }


1

Перегляньте багато відповідей, але нічого не працює. На щастя, знайшли просте рішення. Не потрібно коментувати junit4.12 або видаляти його. Проблема тут:

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

Ця частина показує нам шлях до пошуку файлу в бібліотеці у вашому проекті. Не знаю, чому, але чомусь за замовчуванням він порожній. У моєму випадку шлях такий:

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

Звичайно, ви можете видалити цей рядок у коді, build.grandle(Module.app)але він може знадобитися пізніше. Ось таке рішення:

1 - завантажте junit-4.12.jar або скопіюйте його з папки Android Studio, зазвичай вона повинна бути там. У моєму випадку це було тут:

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

до каталогу, згаданого вище (до вашого проекту)

2 - видалити та додати

тут вам слід повторно ввести корінь у свій junit-4.12.jar

3 - перебудувати

4 - наполегливо працювати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.