引起:java.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有堆栈跟踪可用

时间:2017-02-01 18:18:16

标签: java android android-studio android-gradle okhttp

我尝试使用OkHttp和Picasso(following this answer)对我从Firebase存储下载的图像进行磁盘缓存。现在,该应用程序提供例外和崩溃。我看过这些帖子:post 1post 2但我没有找到任何相关解决方案。我也试图清理和重建项目,但没有运气。

这是 build.gradle

<div#chart>

完整Stacktrace

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "social.com.networking.social.media.app"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            multiDexEnabled true
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    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.1.0'
    compile 'com.android.support:design:25.1.0'
    compile 'br.com.mauker.materialsearchview:materialsearchview:1.2.0'
    compile 'com.alirezaafkar:toolbar:1.1.1'
    compile 'com.github.mancj:MaterialSearchBar:0.3.5'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.slider:library:1.1.5@aar'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-ads:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'
    compile "com.google.firebase:firebase-auth:10.0.1"
    compile 'com.google.firebase:firebase-storage:10.0.1'
    compile 'com.google.firebase:firebase-crash:10.0.1'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
    compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'
    compile 'com.android.support:multidex:1.0.1'

    compile 'org.parceler:parceler-api:1.1.6'
    annotationProcessor 'org.parceler:parceler:1.1.6'


    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

编辑1: 我已经启用MultiDex,因为雷德曼说,但它仍然给出相同的错误。根据这个:developer.android.com/studio/build/multidex.html#keep,我需要决定基本APK中哪些类是必需的。如何确定哪些类是必要的?

12 个答案:

答案 0 :(得分:57)

Android Studio 2.3及更高版本中,即时运行可能会影响您的代码。

禁用Instant Run

文件 - &gt;设置 - &gt;构建,执行,部署 - &gt;即时运行

  

就我而言,从Android Studio开始运行时它非常完美   从其他来源安装时崩溃

答案 1 :(得分:9)

1)请从您的手机中卸载该应用

2)立即从android studio

重新安装应用程序

3)98%它将工作,否则清理项目并重新安装

答案 2 :(得分:6)

您可能需要启用multidex,请按照此

中的指南操作

https://developer.android.com/studio/build/multidex.html,用于启用multidex

  defaultConfig {

    minSdkVersion 14
    targetSdkVersion 21

    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 }

答案 3 :(得分:2)

我的代码方式使用USB线在设备上很好地编译,但是当我尝试使用* .apk文件安装它时,它正在破坏,所以我取消选中文件 - &gt;选项。设置 - &gt;构建,执行,部署 - &gt;即时运行,但现在它与* .apk文件正常工作并开始打破USB安装,错误信息在attachec图像中,即使我按OK它不起作用,当我尝试你安装它再次出现相同的错误消息。

enter image description here

答案 4 :(得分:2)

只需删除项目的构建文件夹,然后清理并运行您的应用程序。这对我有用......

答案 5 :(得分:1)

尝试从项目中删除 .gradle 文件夹。

答案 6 :(得分:0)

我也遇到了这个问题,但仍然无法关闭即时运行。后来,我发现我删除了build-cache文件夹下的所有文件,然后清理了project.My目录是C:\ Users \ HDB。 Android \ built-cache。我希望我能帮助遇到这个bug的其他人。

答案 7 :(得分:0)

对我来说,此问题已通过禁用即时运行

解决了

只需转到首选项->构建,执行,部署->即时运行->禁用该选项

并重新启动应用

答案 8 :(得分:0)

(我知道这是一个老问题,但是我来这里是为了寻找类似问题的解决方案。)

在用尽以上所有其他建议之前,我有一个不同的答案来考虑 ClassNotFoundException:YourParcelableClass错误可能不是问题。实际上,可能不是是一个问题。

我有一个应用程序,可以显示各种内容的屏幕,该屏幕以Parcelable形式传入并在WebView中以HTML形式呈现;直到我清理代码,签入代码,签出一棵干净的新树,然后在手机上卸载并重新安装该应用程序之后,它的工作状况一直很好。我开始出现黑屏;显然,日志中的ClassNotFoundException表示未正确解组我的内容。

在至少一个小时后,他们禁用了即时运行,rm -rf .gradle,清理项目,无效缓存和重新启动等,之后,我开始添加越来越多的健全性问题日志记录,直到我发现我Intent.getParcelableExtra()获取我的内容;黑屏似乎无关! (我仍然不知道为什么,但是WebView.loadData()已停止工作,必须替换为WebView.loadDataWithBaseURL()。)

希望这可以为其他人节省一个小时的愚蠢时间。如果看到带有类名称的ClassNotFoundException,请检查是否仍正确解组对象;他们可能是!

答案 9 :(得分:0)

我找到了该问题的另一个“答案”。使用Android Studio 3.3.2时,我得到了相同的错误消息。我决定清除所有断点。在断点对话框中,有两个“永久”选项,Java异常断点和异常断点。我把它们都检查了,可能是偶然的。当我清除它们和其他断点时,我可以在调试模式下运行。现在调试正在运行,只要不检查断点就可以添加!

答案 10 :(得分:0)

将此添加到您的应用级 Gradle 中的 android 标记

buildFeatures {
    dataBinding true
}

答案 11 :(得分:-1)

由于库版本规范的差异可能导致运行时错误,因此也会发生此错误。 始终在build.gradle中使用相同版本的库 例如:

使用此:

implementation 'com.google.android.gms:play-services-location:11.6.0'
implementation 'com.google.android.gms:play-services-auth:11.6.0'

而不是:

implementation 'com.google.android.gms:play-services-location:15.0.0'
implementation 'com.google.android.gms:play-services-auth:11.6.0'