【问题标题】:Unable to identify source of java.lang.ClassNotFoundException BaseDexClassLoader无法识别 java.lang.ClassNotFoundException BaseDexClassLoader 的来源
【发布时间】:2018-02-16 21:15:48
【问题描述】:

正如我在开发者控制台中看到的那样,我在我的 Android 应用程序中收到了很多来自用户的崩溃报告。我看到的堆栈跟踪是:

java.lang.RuntimeException:

  at android.app.ActivityThread.handleReceiver (ActivityThread.java:2884)

  at android.app.ActivityThread.-wrap14 (ActivityThread.java)

  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1565)

  at android.os.Handler.dispatchMessage (Handler.java:111)

  at android.os.Looper.loop (Looper.java:207)

  at android.app.ActivityThread.main (ActivityThread.java:5728)

  at java.lang.reflect.Method.invoke (Native Method)

  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:789)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:679)
Caused by: java.lang.ClassNotFoundException:
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.app.ActivityThread.handleReceiver (ActivityThread.java:2879)

没有对我的应用程序包名称的引用。我正在使用 Eclipse 进行开发。它与multidex有关吗?我是否需要切换到 Android Studio 来解决这个问题。我无法理解堆栈跟踪背后的基本原因,因此我可以为其寻找解决方案。

注意:我的应用中添加了 google play 服务、IAP 和 OneSignal Sdk

【问题讨论】:

  • 您可以就这个问题提供更多意见吗?您是否能够重现该错误?它是如何发生的?等
  • 你应该使用android studio。
  • 你应该有一些版本信息给我们..
  • 包含第三方库后,出现此错误的数量增加了。
  • 这可能会对你有帮助,伙计github.com/casidiablo/multidex#whats-it-for-again

标签: java android


【解决方案1】:

我个人认为 Android Studio 比 二、Android studio 在 android 开发社区和开源社区。 Android Studio or Eclipse?

阅读Migrate to Android Studio

将您的项目迁移到 Android Studio 需要适应新的 项目结构、构建系统和 IDE 功能。如果你是 从 Eclipse 迁移 Android 项目,Android Studio 提供了一个 导入工具,以便您可以快速将现有代码移动到 Android Studio 项目和基于 Gradle 的构建文件。

Logcat 抛出

Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)

BaseDexClassLoader 各种 dex-based ClassLoader 实现之间通用功能的基类。

为了将您的应用项目配置为使用 MultiDex 配置,您必须进行以下修改,具体取决于 您的应用支持的最低 Android 版本。

multiDexEnabled true设置为你的build.gradlemodule-level文件,如下图:

    android {
    compileSdkVersion //
    buildToolsVersion //

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion //
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

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

您可以查看DexIndexOverflowException

【讨论】:

  • 今天试试这个,告诉你进展如何
【解决方案2】:

您似乎正在使用 pro Guard 并且需要排除某些类。 确保您已排除项目中使用的任何库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2018-08-04
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多