【问题标题】:Exception android java.util.Objects in Android Version 4.3Android 版本 4.3 中的异常 android java.util.Objects
【发布时间】:2019-09-12 18:47:23
【问题描述】:

我在设备 (android 4.3) 中运行我的应用程序时遇到问题,我收到此错误:E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: java.util.Objects

我知道抛出异常是因为 java.util.Objects 的所有静态方法都在 API 19 (Android 4.4.+) 以上可用,因此该方法在该 Android 版本中不存在并且抛出 NoClassDefFoundError。

但我还需要我的应用与 4.3 版兼容,我该如何解决?

trace : java.lang.NoClassDefFoundError: java.util.Objects at okhttp3.CertificatePinner.withCertificateChainCleaner(CertificatePinner.java:231) at okhttp3.OkHttpClient.(OkHttpClient.java:238) at okhttp3.OkHttpClient$Builder.build( OkHttpClient.java:1015)

【问题讨论】:

  • java.lang.NoClassDefFoundError: java.util.Objects at okhttp3.CertificatePinner.withCertificateChainCleaner(CertificatePinner.java:231) at okhttp3.OkHttpClient.(OkHttpClient.java:238) at okhttp3。 OkHttpClient$Builder.build(OkHttpClient.java:1015)
  • 如果您想为问题添加更多信息,请更新问题而不是发表评论。
  • 完成! tnx 我是新的

标签: java android exception noclassdeffounderror


【解决方案1】:

您可能正在使用 OkHttp 3.13.x 或更高版本 3.13.0 是第一个将最低要求提高到 Android 5+ API 21 的 OkHttp 版本

请尝试 3.12.3 版本,因为它应该支持 Android 2.3+ (API 9+) 的设备

来源:https://square.github.io/okhttp/changelog_3x/#version-3130

【讨论】:

    【解决方案2】:

    不要使用这些调用。在您自己的班级中提供您自己的版本。在添加之前,您不能在操作系统版本上使用功能。没有办法做到这一点。但是您可以从 OpenJDK 之类的东西中找到这些功能的开源实现,然后将该类放入您的应用程序中并在那里使用它。

    但是你为什么要花精力支持 4.3 呢?在使用的所有设备中只有 0.4% 是 v 4.3。来源- Google:https://developer.android.com/about/dashboards/ 目前不值得付出努力和成本来支持。 19 个组合之前的所有设备仅占使用的所有设备的 3.5%,而且这些设备在地理上高度集中 - 除非您的主要受众在非洲或亚洲的贫困地区,否则您只会看到其中的一小部分。很可能您已经在研究这个问题上花费了更多的钱(作为时间),而不是您获得的收入。

    哦,请注意,这些数字是 10 月份的 - 现在会更小。

    【讨论】:

    • 这是一个使用旧设备的实习项目,这就是为什么我需要这个最低版本的 android
    • 使用Okhttp时出现问题
    • 刚刚看到你发布的堆栈跟踪 - 你被搞砸了。您的网络库需要它。使用开源替代方案可能行不通(如果您正在进行 Objects 调用,它会)。您可以尝试,但您可能需要使用没有问题的旧版本的网络库。出于安全原因,不建议这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多