Lỗi: (23, 17) Không thể giải quyết: junit: junit: 4.12


133

Tại sao mỗi khi tôi tạo một dự án mới trong Android Studio, nó luôn xuất hiện:

Lỗi: (23, 17) Không thể giải quyết: junit: junit: 4.12?

Khi tôi loại bỏ testCompile 'junit:junit:4.12'trong phụ thuộc thì nó không còn là vấn đề nữa.

xây dựng. nâng cấp

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

Có vẻ như bạn có bình không có trong kho lưu trữ của bạn.
Jens

Làm thế nào để xử lý nó? Tôi đã cài đặt JDK 7 và cũng thêm đường dẫn trong các biến môi trường
fathurzero

Những kho lưu trữ nào bạn sử dụng cho lớp.
Jens

1
Có vẻ như chiếc bình có mặt jcenter.bintray.com/junit/junit/4.12
Jens

1
Kiểm tra câu trả lời mới của tôi: stackoverflow.com/a/38151747/5733853
VahidHoseini

Câu trả lời:


124

Tôi đã từng gặp vấn đề tương tự. Giải quyết bằng cách thêm url cho kho lưu trữ bị thiếu trong build.gradletệp:

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

Đó là nó.


Điều đó chắc chắn đã giải quyết được vấn đề cho tôi, vì vậy ít nhất tôi có thể đồng bộ hóa ngay bây giờ
cuộc cách mạng

16
nguyên nhân sâu xa cho việc này là gì?
Raulp

Điều này đã giải quyết vấn đề, nhưng đó là mavengì?
Sithu

1
Nó nên được thêm vào ở trên buildTypes, nếu không thì lỗi buildTypes không thể được áp dụng cho groovy.lang.Clenses sẽ xảy ra.
Sithu

Thế còn jcenter()? Có cần phải loại bỏ jcenter()khỏi kho?
Hosein Aqajani

34

Chỉ cần xóa "testCompile 'junit: junit: 4.12'" khỏi tệp 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'
 }

làm việc cho tôi và tôi hạnh phúc! :)

Hãy nhớ rằng đây không phải là câu trả lời thực sự của câu hỏi này. Tôi đã đề cập đến điều này bởi vì nó hoạt động khi bạn loại bỏ các dòng trên.


24

Đi đến Tệp -> Cấu trúc dự án. Cửa sổ sau sẽ mở:

nhập mô tả hình ảnh ở đây

Từ đó:

  1. xóa thư viện Junit (chọn Junit và nhấn nút "-" bên dưới) và
  2. thêm lại lần nữa (chọn nút "+" bên dưới, chọn "thư viện dep", tìm kiếm "Junit", nhấn OK). Nhấn OK để áp dụng thay đổi. Sau khoảng 30 giây, đồng bộ hóa lớp của bạn sẽ hoạt động tốt.

Hy vọng nó cũng có tác dụng với bạn: D


3
Tôi đã thử điều này nhưng khi tôi đi thêm Junit trở lại thì nó không ở đó ... wtf
Brew Dain

Để thêm thủ công Junit vào dự án, hãy mở tệp "build.gradle (Module: app)" từ bên trái. Thêm dòng này: testCompile 'junit: junit: 4.12' ở cuối của tập tin bất cứ nơi nào ở giữa các phụ thuộc chặn và cuối cùng là đồng bộ dự án bằng cách vào Tools> ANDROID> SYNC DỰ ÁN VỚI GRADLE FILES
Hasaan Ali

đã không làm việc cho tôi. sau khi thêm Junit4.12, nó đã báo lỗi tương tự như OP.
dùng13107

15

Nó không thể có được thư viện Junit.

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

Sau khi thêm dòng trên vào khối android trong tệp build.gradle, nó đã giải quyết được vấn đề. Điều này có thể là do studio Android của bạn không có thư viện Junit.


15

thêm kho lưu trữ trong tệp build.gradle của bạn

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

13

Có lẽ lớp của bạn không đầy đủ, tôi khuyên bạn nên thêm vào như sau

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

nhưng trong một số trường hợp sẽ không hoạt động, bạn hoàn toàn có thể xóa nó khỏi các phụ thuộc trong lớp của bạn.

Tôi nghĩ sẽ ổn nếu bạn cài đặt lại studio android với điều kiện xóa thư mục gradle trong thư mục người dùng .gradle


8

Đây là những gì tôi đã làm để giải quyết vấn đề tương tự. Tôi đứng sau một bức tường lửa, đó là vấn đề tương tự như của bạn. Vì vậy, tôi đã cố gắng loại bỏ

testCompile 'junit:junit:4.12' line 

nhưng điều đó đã không làm việc cho tôi. Tôi đã thử thêm các dòng mã dưới đây:

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

Ngay cả điều đó đã không làm việc cho tôi.

Tôi đã thử xóa (-) và readding (+) Junit4.12 khỏi các phụ thuộc thư viện trong Cài đặt mô-đun. Tuy nhiên, điều đó không làm việc cho tôi.

Đã thử đồng bộ hóa và xây dựng lại dự án nhiều lần. Vẫn không làm việc cho tôi.

Cuối cùng, những gì tôi đã làm là tải xuống thủ công tệp Junit4.12.jar từ trang web mvnreposeective. Tôi đặt tệp jar này trong Vùng làm việc của Android trong thư mục Project bên trong thư mục libs. Sau đó, đi tới Cài đặt mô-đun> Tab phụ thuộc> (+)> Phụ thuộc tệp> trong cửa sổ Đường dẫn gọn, mở rộng thư mục 'libs' và bạn sẽ tìm thấy tệp Jar bạn đã sao chép bên trong đó. Chọn Tệp và nhấp vào 'OK' Bây giờ hãy xóa phiên bản Junit4.12 trước đó khỏi danh sách các phụ thuộc.

Bạn nên có một mục "libs\junit-4.12.jar"trong danh sách Phụ thuộc. Bây giờ bấm vào 'OK'.

Bây giờ Gradle sẽ xây dựng lại dự án và bạn nên đi.

Hi vọng điêu nay co ich!


Tôi vừa vô hiệu hóa bộ đệm và khởi động lại Android Studio.
Mohammedsalim Shivani

6

Tôi sẽ cố gắng, nhưng điều duy nhất giúp tôi giải quyết vấn đề là xóa dòng

testCompile 'junit:junit:4.12'

từ lớp ứng dụng.


5

Nó xảy ra vì HTTPS bị chặn bởi Proxy. Cố gắng thay đổi từ jcenter mặc định (sử dụng HTTPS) thành HTTP.

Trước

repositories {
     jcenter()
}

Sau

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

Lặp lại bước trên cho tất cả các sản phẩm.

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

Không hoạt động khi proxy, lưu lượng HTTP hoạt động và lưu lượng HTTPS bị cấm.
Diti

Hmm .. Đây là những gì tôi đã cố gắng giải thích trong bài viết của mình. Theo mặc định, nó sử dụng HTTPS bị chặn. Xem trước và sau
jafarmlp

4

Tôi đã nhận được lỗi này sau khi tạo một dự án mới. Trong tệp build.gradle, tôi đã có:

jcenter()

Tôi thay đổi nó thành như sau và lỗi đã biến mất:

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

Tôi nghĩ điều này là do tôi đứng sau tường lửa và chỉ định url giống như vậy nên thay đổi nó từ https thành http


1
Cảm ơn rất nhiều .
Khắc

4

Có lẽ bạn đang đứng sau proxy. Xảy ra với tôi, sử dụng dự án xây dựng lại kết nối di động (không có proxy) của tôi và lỗi biến mất. Được trả về kết nối ban đầu (có proxy) và xây dựng lại không có lỗi.


Tôi cũng cần chỉ định proxy cho lớp, nhưng tôi không muốn thêm chi tiết đăng nhập của mình vào mỗi dự án. Câu trả lời là thêm gradle.properies vào thư mục người dùng của tôi. Thông tin thêm trong câu trả lời này - stackoverflow.com/a/26524019/542629 .
walkTarget

4

Bạn đang sử dụng proxy ? Nếu vậy, vấn đề có thể là do thiếu cấu hình mạng cho https trong gradle.propertiestệp của bạn .

AndroidStudio tự động đặt các cài đặt proxy mặc định của bạn thành gradle.propertiestệp trong dự án của bạn, nhưng chỉ dành cho http và quên https.

Vì vậy, về cơ bản, gradle.propertiestệp của bạn cần chứa cả cấu hình http và 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

Chủ yếu là vấn đề này sẽ đến khi bạn cập nhật SDK, tại thời điểm tạo dự án, bản dựng Gradle không thành công. Nếu bạn thêm kho lưu trữ mavenjcenter vào build.gradle (Module: ứng dụng), vấn đề của bạn sẽ được giải quyết.

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

Đây là hai dòng bạn phải thêm sau

apply plugin: 'com.android.application' 

Đây là cách mã của bạn trông như thế nào sau khi thêm hai dòng đó

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

Lỗi là do thiếu tệp jar. Giải pháp đơn giản của tôi chỉ là sao chép tất cả các tệp không phân giải vào C: \ Program Files \ Android \ Android Studio \ gradle \ m2reposeective ... (đường dẫn tệp của bạn có thể khác). Tôi có khoảng 6 phụ thuộc không thể giải quyết được, Junit là một trong số họ và những người khác là com và org và javax. Vì tôi đứng sau tường lửa, ngay cả khi tôi đã thêm mã cho kho lưu trữ, Android Studio dường như không truy cập được. Tôi đã đi đến kho lưu trữ maven và tải xuống tất cả các tệp sẽ không giải quyết. Vấn đề được giải quyết và đồng bộ hóa Gradle không có lỗi. Nhưng tôi là một người mới được chứng nhận chỉ có 1 ngày kinh nghiệm nên tôi không biết nếu đây là cách thích hợp để làm điều đó.

Lỗi ví dụ: Không thể giải quyết com: Squareup: javawriter: 2.1.1

Bước 1: Tôi đã tạo một đường dẫn C: \ Chương trình tập tin \ Android \ Android Studio \ gradle \ m2reposeective \ com \ vuôngup \ javawriter \ 2.1.1 \

Bước 2: Tôi đã tải xuống tất cả các tệp jar từ kho lưu trữ của maven: http://repo1.maven.org/maven2/com/sapesup/javawriter/2.1.1/

Bước 3: Tôi đã tải xuống thủ công tất cả các tệp .jar từ thư mục này

Bước 4: Tôi đã sao chép chúng vào C: \ Chương trình tập tin \ Android \ Android Studio \ gradle \ m2reposeective \ com \ vuôngup \ javawriter \ 2.1.1 \

Tôi đã lặp lại điều này với tất cả các tập tin không giải quyết được bao gồm cả Junit.

Đối với Junit, đây là thư mục tôi đã tạo: C: \ Program Files \ Android \ Android Studio \ gradle \ m2reposeective \ junit \ junit \ 4.12 và sau đó tôi đã sao chép Junit-4.12.jar trong thư mục này và lỗi Junit biến mất.


3
  1. Hãy chắc chắn rằng bạn không đứng sau một proxy!
  2. Nếu bạn đã định cấu hình Android Strudio để hoạt động với proxy, hãy chắc chắn tắt tùy chọn đó trong tùy chọn Android Studio
  3. Truy cập gradle.properies trong chế độ xem Android trong Android Studio và xóa tất cả cấu hình proxy
  4. Đồng bộ hóa lớp của bạn bây giờ
  5. Thưởng thức mã hóa!

2

THAY ĐỔI bản dựng của bạn. Nâng cấp như thế này, hoạt động tốt với tôi:

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

thêm

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

đến android


2

Chuyển đến Tệp -> Cấu trúc dự án -> phụ thuộc Bạn sẽ tìm thấy -> junit: unit: 4.12

Ở phía bên tay phải .. chọn biên dịch từ trình đơn thả xuống. Đơn giản .. xong rồi.

Hình ảnh tham chiếu: http://i.stack.imgur.com/5WvS3.png

VV của Quỷ đỏ


2

Cài đặt Android Studio của tôi hoàn toàn ngoại tuyến. Để giải quyết các loại vấn đề này, tôi đã sử dụng Trình theo dõi tiến trình. Nó cho thấy rằng một vài tệp bị thiếu trong "Android Studio \ gradle \ m2reposeective". Tôi đã tải xuống tất cả các tập tin từ

  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/ (Tôi chỉ có thể đăng hai liên kết ... ;-))

và sao chép các tệp này trong "Android Studio \ gradle \ m2reposeective". Bạn phải tạo cấu trúc bên dưới "m2reposeective" vì nó nằm dưới "maven2". Có thể có nhiều tệp bị thiếu hơn, nhưng tại thời điểm này, ít nhất bản dựng Gradle đã hoàn thành mà không có lỗi.


trong tất cả các câu trả lời này, đây là câu duy nhất thực sự giải quyết được vấn đề của tôi (tôi đã kiểm tra tất cả!). Tất nhiên đối với tôi nó cần thêm kho lưu trữ để thêm nhưng giải pháp là như nhau. cái duy nhất không hoạt động là "javax.annotation-api / 1.2" mà sau một vài thử nghiệm tôi đã phải loại bỏ nó khỏi các phụ thuộc. cảm ơn @Tasko
Lord Sepid

2

Tôi đã có vấn đề tương tự.

  • 1 tùy chọn: Tải xuống Junit 4.12.jar và sao chép nó trong thư mục lib của bạn và khởi động lại studio android. Lợi ích bạn không phải tạo ra bất kỳ dự án mới

  • Tùy chọn 2: Tạo một dự án mới có kết nối internet và sao chép tất cả mã java và XML trong dự án mới được tạo. Lợi ích vấn đề này sẽ được giải quyết vĩnh viễn


1

Xóa dòng testCompile 'junit:junit:4.12'

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

Sau đó đồng bộ hóa dự án một lần nữa.


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

Lưu ý: Xóa dòng testCompile 'junit: junit: 4.12' đã được giải quyết vấn đề của tôi.


1

Thử cái này:

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

Nếu bạn đứng sau một proxy. Android Studio sẽ thêm proxy cho http vào Gradle, nhưng sẽ không cho https. Thêm cài đặt proxy cho https để gradle.properies


1

nếu bạn gặp phải vấn đề này, bạn hoàn toàn có thể giải quyết nó bằng cách thay đổi:

build.gradle (dự án: ...)

thay thế cái này

    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

Tôi đã có cùng một vấn đề, nhưng với một vấn đề khác.

Vấn đề khác của tôi là việc xây dựng Gradle quá chậm!

Tôi đã giải quyết vấn đề của mình bằng cách làm điều này

Nếu bạn thích mdew, bạn cần làm điều này bất cứ khi nào bạn tạo dự án của mình để làm điều này

Vì vậy, nếu bạn muốn đặt tùy chọn mặc định thành maven

Làm cái này:

Chuyển đến thư mục:

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

Sau đó mở build.gradle.ftltệp bằng notepad ++ hoặc notepad và thay thế tất cả jcenter()bằng mavenCentral().

EDIT: Tại sao nó đi xuống bỏ phiếu? bạn không thích nó à?


1

Tôi không thể tìm ra lý do tại sao Android Studio không đồng bộ hóa với lớp. Hóa ra nó không giống VPN của tôi, vì vậy hãy theo dõi!


1

Chuyển đến "Tệp" -> "Cấu trúc dự án" -> "Ứng dụng" Trong tab "thuộc tính". Trong "Thư viện Repository" lĩnh vực đặt ' http://repo1.maven.org/maven2 ' sau đó nhấn Ok. Nó đã được sửa như thế đối với tôi. Bây giờ dự án đang biên dịch.


1

Chỉ cần kết nối với Internet và khởi động Android Studio và mở dự án của bạn. Trong khi Gradle Sync, nó sẽ tải xuống các phụ thuộc từ Internet (Tất cả các tệp JAR). Điều này đã giải quyết nó cho tôi. Không chỉnh sửa trong tệp Gradle, tất cả được thực hiện bởi Android Studio Automatic. Sử dụng Android Studio 2.2 :)

Cũng đừng quên cài đặt Java JDK 1.x (7 hoặc 8 đều hoạt động tốt).


1

Tôi rất thích đề xuất giải pháp hoàn hảo phù hợp với hoàn cảnh của tôi:

  • lúc đầu, hãy chắc chắn thêm

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

    đến tệp build.gradle cấp dự án trong buildscript {}khối

  • sau đó thêm

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

    đến tập tin build.gradle cấp dự án

  • điểm tiếp theo là thêm

    repositories {
        jcenter()
        mavenCentral()
    }

    để xây dựng cấp độ mô-đun bên trong buildTypes{ }


1

Nhìn qua cho nhiều câu trả lời nhưng không có gì hoạt động. May mắn thay đã tìm thấy giải pháp dễ dàng. Không cần bình luận Junit4.12 hoặc xóa nó. Vấn đề là ở đây:

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

Phần này cho chúng ta thấy đường dẫn tìm tệp trong thư viện trong dự án của bạn. Không biết tại sao nhưng vì một số lý do theo mặc định, nó trống rỗng. Trong trường hợp của tôi, đường dẫn là:

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

Chắc chắn bạn có thể xóa dòng này trong mã build.grandle(Module.app)nhưng bạn có thể cần nó sau này. Đây là giải pháp:

1 - tải xuống Junit-4.12.jar hoặc sao chép nó từ thư mục Android Studio của bạn, thông thường nó sẽ ở đó. Trong trường hợp của tôi, nó đã ở đây:

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

vào thư mục được đề cập ở trên (cho dự án của bạn)

2 - xóa và thêm

ở đây bạn nên nhập lại root vào Junit-4.12.jar của bạn

3 - xây dựng lại

4 - làm việc chăm chỉ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.