Я использую несколько библиотек для моего проекта, которые я добавляю в зависимости, используя build.gradle, такие как Volley и Caligraphy. Я попытался запустить приложение и проект построен очень хорошо, но когда приложение пытается получить доступ к одной из внешних библиотек, я получил эту ошибку:NoClassDefFoundError при использовании внешних библиотек в Android Studio
09-15 12:35:30.037 20659-20659/com.node8.peek:background_crash E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.node8.peek:background_crash, PID: 20659
java.lang.NoClassDefFoundError: Failed resolution of: Luk/co/chrisjenx/calligraphy/CalligraphyConfig$Builder;
at com.node8.peek.PeekApplication.onCreate(PeekApplication.java:48)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4593)
at android.app.ActivityThread.access$1600(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by: java.lang.ClassNotFoundException: Didn't find class "uk.co.chrisjenx.calligraphy.CalligraphyConfig$Builder" on path: DexPathList[[zip file "/data/app/com.node8.peek-6/base.apk"],nativeLibraryDirectories=[/data/app/com.node8.peek-6/lib/arm, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.node8.peek.PeekApplication.onCreate(PeekApplication.java:48)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4593)
at android.app.ActivityThread.access$1600(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Suppressed: java.lang.ClassNotFoundException: uk.co.chrisjenx.calligraphy.CalligraphyConfig$Builder
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 13 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
Я пытался очистки проекта и Invalidate Cache & Перезагрузитесь в Android Studio, но у меня все еще есть ошибка. Что могло вызвать эту ошибку? Это мой build.gradle:
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.google.gms:google-services:3.0.0'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'android'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
defaultConfig {
applicationId "com.node8.peek"
minSdkVersion 21
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
}
}
repositories {
maven { url "http://jzaccone.github.io/SlidingMenu-aar" }
mavenCentral()
jcenter();
maven {
url "https://jitpack.io"
}
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile 'com.devbrackets.android:exomedia:3.0.2'
compile 'com.github.castorflex.verticalviewpager:library:19.0.1'
compile 'uk.co.chrisjenx:calligraphy:2.2.0'
compile 'com.jeremyfeinstein.slidingmenu:library:[email protected]'
compile 'net.simonvt.menudrawer:menudrawer:[email protected]'
compile 'com.sothree.slidinguppanel:library:3.3.0'
compile 'com.nikoyuwono:toolbar-panel:0.1.1'
compile 'com.android.support:design:22.2.1'
compile 'de.hdodenhof:circleimageview:2.0.0'
compile 'com.google.android.gms:play-services:9.2.0'
compile 'com.splitwise:tokenautocomplete:[email protected]'
compile 'com.klinkerapps:android-chips:[email protected]'
compile('org.apache.httpcomponents:httpmime:4.3.5') {
exclude module: 'org.apache.httpcomponents:httpclient'
}
compile 'com.android.support:recyclerview-v7:22.2.1'
compile('com.github.ganfra:material-spinner:1.1.1') {
exclude group: 'com.android.support', module: 'appcompat-v7'
}
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.facebook.android:facebook-android-sdk:4.8.0'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile files('libs/javacpp.jar')
compile files('libs/twitter4j-core-4.0.4.jar')
compile files('libs/javacv.jar')
compile project(':volley')
compile('com.twitter.sdk.android:twitter:[email protected]') {
transitive = true;
}
compile 'com.google.android.gms:play-services-maps:9.2.0'
//compile 'com.google.android.gms:play-services-location:8.1.0'
compile 'com.google.maps.android:android-maps-utils:0.4'
compile 'com.tumblr:jumblr:0.0.11'
compile 'oauth.signpost:signpost-core:1.2.1.2'
compile 'oauth.signpost:signpost-commonshttp4:1.2.1.2'
compile 'com.theartofdev.edmodo:android-image-cropper:2.2.+'
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true;
}
compile 'com.android.support:multidex:1.0.1'
compile 'com.github.jonisaa:MaterialCalendarview:v1.2.2'
compile 'com.makeramen:roundedimageview:2.2.1'
compile 'com.github.lzyzsd:circleprogress:[email protected]'
compile 'com.google.firebase:firebase-core:9.2.0' // this line must be included to integrate with Firebase
compile 'com.google.firebase:firebase-messaging:9.2.0'
compile 'com.google.android.gms:play-services-location:9.2.0'
compile 'com.google.android.gms:play-services-places:9.2.0'
compile 'com.timehop.stickyheadersrecyclerview:library:[email protected]'
}
apply plugin: 'com.google.gms.google-services'
Edit: Я попытался удалить библиотеку каллиграфии из моего проекта, но теперь приложение дает эту ошибку всякий раз, когда я пытаюсь получить доступ к библиотеке залпа.
Редактирование2: Включение Instant Run решило проблему, но я не хочу использовать Instant Run, если это возможно, так как это заставило приложение занять много времени, чтобы загрузить его при первой установке. Почему мгновенный запуск вызвал NoClassDefFoundError? Есть ли способ предотвратить ошибку без включения Instant Run?
Посмотрите на этот https://github.com/chrisjenx/Calligraphy/issues/275 –
компиляции 'com.android.support:recyclerview-v7:22.2.1' в два раза ! – Amit