Java.lang.NoClassDefFoundError: Android on Lollipop中的Landroid/support/graphics/drawable/VectorDrawableCompat解析失败

3

希望有人能帮助我。在Lollipop版本上运行我的应用程序时出现了以下错误:

Process: br.com.turbi.turbi, PID: 4279
                                                              java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/graphics/drawable/VectorDrawableCompat;
                                                                  at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:734)
                                                                  at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:367)
                                                                  at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197)
                                                                  at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190)
                                                                  at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:711)
                                                                  at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:195)
                                                                  at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:81)
                                                                  at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:131)
                                                                  at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155)
                                                                  at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31)
                                                                  at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55)
                                                                  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:205)
                                                                  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
                                                                  at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519)
                                                                  at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
                                                                  at br.com.turbi.turbi.SplashActivity.onCreate(SplashActivity.java:31)
                                                                  at android.app.Activity.performCreate(Activity.java:5990)
                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                                  at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                  at android.os.Looper.loop(Looper.java:135)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                  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:903)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                               Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.graphics.drawable.VectorDrawableCompat" on path: DexPathList[[zip file "/data/app/br.com.turbi.turbi-2/base.apk"],nativeLibraryDirectories=[/data/app/br.com.turbi.turbi-2/lib/x86, /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 android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:734) 
                                                                  at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:367) 
                                                                  at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197) 
                                                                  at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190) 
                                                                  at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:711) 
                                                                  at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:195) 
                                                                  at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:81) 
                                                                  at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:131) 
                                                                  at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155) 
                                                                  at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31) 
                                                                  at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55) 
                                                                  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:205) 
                                                                  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185) 
                                                                  at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) 
                                                                  at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71) 
                                                                  at br.com.turbi.turbi.SplashActivity.onCreate(SplashActivity.java:31) 
                                                                  at android.app.Activity.performCreate(Activity.java:5990) 
                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                  at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                  at android.os.Looper.loop(Looper.java:135) 
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                  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:903) 
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                Suppressed: java.lang.ClassNotFoundException: android.support.graphics.drawable.VectorDrawableCompat
                                                                  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)
                                                                        ... 30 more
                                                               Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

它在6.0以上的版本上运行得非常完美,你们有什么线索吗?我已经在我的gradle文件中添加了vector-drawale依赖项。在这里搜索类似的问题,但只发现一个人在Eclipse上遇到了这个问题,我正在使用Android Studio。提前致谢!

我的gradle依赖关系如下:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:customtabs:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-vector-drawable:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:support-v13:25.3.1'
compile 'com.jakewharton:butterknife:8.5.1'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.kyanogen.signatureview:signature-view:1.0'
compile 'io.card:android-sdk:5.5.0'
compile 'com.google.firebase:firebase-database:11.0.1'
compile 'com.google.firebase:firebase-auth:11.0.1'
compile 'com.facebook.android:facebook-android-sdk:4.25.0'
compile 'com.google.android.gms:play-services:11.0.1'
compile 'com.google.android.gms:play-services-location:11.0.1'
compile 'com.google.android.gms:play-services-maps:11.0.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.firebase:firebase-storage:11.0.1'
testCompile 'junit:junit:4.12'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
compile 'com.vicmikhailau:MaskedEditText:2.0.2'
compile 'com.google.firebase:firebase-crash:11.0.1'
compile 'com.google.firebase:firebase-messaging:11.0.1'
compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.6'
compile('com.digits.sdk.android:digits:2.0.6@aar') {
    transitive = true;
}
compile 'com.airbnb.android:lottie:2.0.0-beta4'
compile 'com.felipecsl:gifimageview:2.1.0'
compile 'com.android.volley:volley:1.0.0'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile 'com.koushikdutta.ion:ion:2.+'
/*** Glide ***/
compile 'com.github.bumptech.glide:glide:4.0.0-RC1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1'
compile 'com.android.support:multidex:1.0.1'

}


请查看以下线程 https://stackoverflow.com/questions/45625750/java-lang-noclassdeffounderror-failed-resolution-of/45689844#45689844 - Michael Meyer
顺便说一下,编译如此多重叠的库是一种反模式。 - OneCricketeer
2个回答

1
我尝试复现这个错误。
以下是导致此错误的代码:
compileSdkVersion 25
buildToolsVersion '25.0.0'
---------

compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:25.0.1'

这是解决错误的代码:

here is the code which solved the bug :

compileSdkVersion 25
buildToolsVersion '25.0.0'
---------

compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:design:25.0.0'

0

编译代码后,每个类都会生成一个 .class 文件。这些二进制文件是 Java 解释器执行程序所需的字节码。NoClassDefFoundError 表示类加载器(在本例中为 java.net.URLClassLoader)无法找到您要使用的类的 .class 文件,该加载器负责动态加载类。

如果所需的类不存在,则代码将无法编译(除非使用反射加载类),因此通常此异常表示您的类路径不包括所需的类。请记住,类加载器(特别是 java.net.URLClassLoader)将在类路径中的每个条目中的 a.b.c 包中的 a/b/c/ 文件夹中查找类。NoClassDefFoundError 还可以表示您缺少已编译的 .jar 文件的传递依赖项,并且您正在尝试使用它们。

例如,如果您有一个名为 com.example.Foo 的类,在编译后,您将获得一个名为 Foo.class 的类文件。例如,假设您的工作目录为 .../project/。那么该类文件必须放置在 .../project/com/example 中,并将类路径设置为 .../project/。

顺便提一下:我建议利用现有的 Java 和 JVM 语言工具。像 Eclipse 和 IDEA 这样的现代 IDE,以及 Maven 或 Gradle 等构建管理工具,将帮助您不必过多关注类路径,而专注于编写代码!话虽如此,本链接介绍了如何在命令行上执行时设置类路径。

如果缺失的类不是来自您的项目,我创建了这个工具,用于查找给定类的开源工件。将类名粘贴到搜索框中,如果它是开源的,它就会找到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接