【问题标题】:java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.dynamic.zzf" on path: DexPathListjava.lang.ClassNotFoundException:在路径上找不到类“com.google.android.gms.dynamic.zzf”:DexPathList
【发布时间】:2017-12-23 17:48:18
【问题描述】:

我遇到了这个奇怪的错误

原因:java.lang.ClassNotFoundException:在路径上找不到类“com.google.android.gms.dynamic.zzf”:DexPathList [[zip 文件“/data/app/com.dancam.chords- 2/base.apk"],nativeLibraryDirectories=[/data/app/com.dancam.chords-2/lib/arm64, /system/lib64, /vendor/lib64]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:380) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 com.google.android.gms.internal.zzel.(未知来源) 在 com.google.android.gms.internal.zzel.(未知来源) 在 com.google.android.gms.internal.zzel.zzeU(未知来源) 在 com.google.android.gms.internal.zzfh.zza(未知来源) 在 com.google.android.gms.ads.MobileAds.initialize(未知来源) 在 com.google.android.gms.ads.MobileAds.initialize(未知来源) 在 dancam.com.chords.Drawer.onCreate(Drawer.java:105) 在 android.app.Activity.performCreate(Activity.java:6684) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6186) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

在抽屉,第 105 行

MobileAds.initialize(getApplicationContext(), "ca-app-pub-nnnnnnnnnnnnnnnnnnnnnnn");

这是我第一次看到这个错误,在谷歌上搜索我什至找不到人在谈论它。

你们中有人知道为什么会发生这种情况以及如何解决吗?

更多信息:

实现库后,我必须修改我的build.gradle 并添加

defaultConfig {
 ...
 multiDexEnabled true
}

dataBinding {
 enabled = true
}

此更改是否与错误有关?

【问题讨论】:

  • 您是否在 build.gradle 文件中为 Ads 添加了依赖项?
  • @mthakuri 我确实做到了,在添加这个库之前它曾经工作过
  • 你能从设备或模拟器中卸载应用程序,然后用干净的构建重新运行吗?我希望你已经正确地遵循了 mutidex(developer.android.com/studio/build/multidex.html) 集成和依赖关系。
  • github.com/googlesamples/android-vision/issues/10 。也请仔细检查一下,问题可能是由于设备上的 Play Service 版本和您正在编译应用程序的版本不同。
  • 减慢你的构建过程而不是你的应用程序。是的,您可以通过不使用太多依赖项来避免:D。现在,就构建过程而言,事情正在变得越来越好,但是是的,它需要走很长的路才能被认为是快速的。

标签: java android classnotfoundexception


【解决方案1】:

我设法解决了这个问题。我像这样在我的应用中实现了firebase

compile 'com.google.firebase:firebase-ads:10.2.0'
compile 'com.google.firebase:firebase-invites:10.2.0'
compile 'com.google.firebase:firebase-crash:10.2.0'
compile 'com.google.firebase:firebase-storage:11.0.2'

此依赖项之间的版本不匹配导致应用程序崩溃。将最后一个依赖项更改为

compile 'com.google.firebase:firebase-storage:10.2.0'

解决了我的问题。

【讨论】:

    【解决方案2】:

    出现问题是因为google-play-services.jar 不在路径上。您是否已经添加并将 jar 添加到类路径或 jar 文件路径的正确位置。如果您不使用它,请下载 jar 并添加到类路径中。您可以从以下链接下载:

    http://www.java2s.com/Code/Jar/g/Downloadgoogleplayservicesjar.htm

    如果你使用 maven 项目,你可以使用下面的依赖:

    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>4.1.1.4</version>
        <scope>provided</scope>
    </dependency>
    

    【讨论】:

    • 这很奇怪,在实现库之前一切正常。这可能是因为我启用了数据绑定吗?这是我唯一改变的。实际上我也启用了 multiDexEnabled
    • 我尝试重新安装 Google Play 服务,但错误仍然存​​在
    • 然后试试这个...右键单击项目并单击属性。 “属性”面板将打开。转到 Java Build Path -> Order and Export 。从下面的列表中取消选中“Android 依赖项”旁边的框。最后清理您的项目并运行。
    猜你喜欢
    • 2014-04-19
    • 1970-01-01
    • 2017-03-16
    • 2018-04-13
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多