【问题标题】:java.lang.ClassNotFoundException in dalvik.system.BaseDexClassLoader.findClassdalvik.system.BaseDexClassLoader.findClass 中的 java.lang.ClassNotFoundException
【发布时间】:2017-01-02 12:28:09
【问题描述】:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.me.hexavoidaa/com.me.hexavoidaa.PTPlayer}: java.lang.ClassNotFoundException: Didn't find class "com.me.hexavoidaa.PTPlayer" on path: DexPathList[[zip file "/data/app/com.me.hexavoidaa-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.me.hexavoidaa-1, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2208)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2340)
    at android.app.ActivityThread.access$800(ActivityThread.java:157)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5293)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.me.hexavoidaa.PTPlayer" on path: DexPathList[[zip file "/data/app/com.me.hexavoidaa-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.me.hexavoidaa-1, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
    ... 11 more

【问题讨论】:

  • multidex实现可能有问题,参考Documentation
  • 您是否已将活动添加到清单中?
  • 我建议你在这里寻找一些可能的解决方案:stackoverflow.com/questions/22399572/…
  • 你是否在 manifest 中添加了 PTPlayer 类?
  • 这里有同样的问题。不知道...大家解释一下为什么投反对票?

标签: java android


【解决方案1】:

将此添加到 gradle.build:

defaultConfig {
...
minSdkVersion 14
targetSdkVersion // your version 
...

// Enabling multidex support.
multiDexEnabled true
}

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

【讨论】:

  • 我有一个非常小的应用程序,但仍然存在这个问题:play.google.com/store/apps/details?id=com.lb.app_manager。你认为我应该启用 multiDex 吗?我注意到它(目前)仅在 Android 5.1 及更低版本上发生,但文档说它不应该在 Android 5.0 及更高版本上发生......
  • @androiddeveloper 我在运行 Android 5.1 及更低版本的设备上遇到了完全相同的问题。你设法解决了这个问题吗?
  • 同样的问题!有 5.0、5.1 和 5.1.1!
【解决方案2】:

在 Android 9 中可能有助于将清单添加到“应用程序”标签中:

<uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />

【讨论】:

  • 这对 ClassNotFound 有什么帮助?
【解决方案3】:

在某些情况下,这可能是 MultiDex 问题。在你的应用程序类中试试这个。那是在App.java 中扩展Application

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this); // this is the key code
}

来源:https://github.com/opendatakit/collect/issues/387

【讨论】:

  • 仍然出现问题
  • 只有当你的 App 类已经扩展了其他类并且你不能从 MultiDexApplication 扩展时才需要这个
【解决方案4】:

如果您已经在 gradle 和 manifest 中添加了 multidex,然后尝试禁用即时运行,然后创建 apk 进行测试,我遇到了同样的问题并进行了很多搜索并尝试了所有解决方案,但最后这解决了我的问题

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多