gpt4 book ai didi

java.lang.NoClassDefFoundError : [generic] at dalvik. system.NativeStart.main(本地方法)

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:50:49 26 4
gpt4 key购买 nike

我的应用程序的一些用户遇到了这个异常

java.lang.NoClassDefFoundError: [generic] 
at dalvik.system.NativeStart.main(Native Method)

这不是常见的异常,因为用户数量众多,而且只有部分用户有此异常。我不使用任何 native 库,所有外​​部库也不使用任何 native 代码

它发生的 Android 版本:

  1. Android 4.0.3 - 4.0.4 (97.7%)
  2. Android 4.0 - 4.0.2 (1.5%)
  3. 安卓 4.1 (0.8%)

有人可以帮我解决问题吗? AndroidManifest中的receiver可以调用这个问题吗?

最佳答案

带有 [generic] 标记的

NoClassDefFoundError 由 VM 从“预制”对象抛出。该异常没有有用的堆栈跟踪,但通常不会自行出现。

背景:类加载器机制需要在加载器中找不到类时抛出异常。加载器必须服从它们的父加载器,所以如果你尝试加载一个应用程序类,它会首先询问引导加载器,这将失败并抛出异常。应用加载器随后会进行自己的查找,这很可能会成功。

这意味着 VM 正在分配一个异常,初始化对象,并填充堆栈跟踪...然后将其丢弃,对于不是来自引导类加载器的每个类。

为避免无意义的分配,引导加载程序(在 VM 内实现)抛出一个通用的预分配异常对象。因为该对象是在 VM 启动时完全形成的,所以它没有有意义的堆栈跟踪信息。

实际上您看不到这些,因为应用程序通常不会直接从引导加载程序加载类。应用程序或系统加载器为您创建一个有意义的异常。即使您直接从引导加载程序请求一个类,您也应该只将此视为 ClassNotFoundException 的“原因”。

编写 DexClassLoader 是为了在找不到类时使用错误代码而不是异常,因此您根本不会通过该路径看到它。

如果 NoClassDefFoundError 是更大异常的“原因”,您需要获取最外层的异常,因为它会有有意义的堆栈跟踪。如果你看到它们自己出现,那么一些非常奇怪的事情正在发生——很可能是一些代码试图直接加载类并传递 null 而不是类加载器对象(这是你如何引用引导加载程序)。

关于java.lang.NoClassDefFoundError : [generic] at dalvik. system.NativeStart.main(本地方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22073622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com