gpt4 book ai didi

android - Android 上的 NoClassDefFoundError - 一个非常奇怪的情况?

转载 作者:搜寻专家 更新时间:2023-11-01 08:12:49 25 4
gpt4 key购买 nike

我面临一个奇怪的情况,类肯定在我的 android 应用程序的类路径上,但我不断收到 NoClassDefFoundError 异常。

我已通过以下代码 fragment 检查该类确实存在:

try{
Field dexField = PathClassLoader.class.getDeclaredField("mDexs");
dexField.setAccessible(true);

PathClassLoader classLoader =
(PathClassLoader)Thread.currentThread().getContextClassLoader();
Log.d("OUT", "Class loader" + classLoader.getClass().getName());

DexFile[] dexs = (DexFile[]) dexField.get(classLoader);

Log.d("OUT", "Enumerating");
for (DexFile dex : dexs) {
Enumeration<String> entries = dex.entries();
while (entries.hasMoreElements()) {
// (3) Each entry is a class name, like "foo.bar.MyClass"
String entry = entries.nextElement();
Log.d("OUT", "Entry: " + entry);
}
}
}catch(Throwable e){
Log.e("OUT", e.getMessage(), e);
}
// Here I reference to the problematic class

在设备上运行应用程序时,日志会打印类名,并在访问它时抛出 NoClassDefFoundError 错误。

我迷路了。

有什么建议吗?我将不胜感激。谢谢。

最佳答案

您需要了解,至少在规范的 Java 中,“NoClassDefFoundError”并不意味着在类路径中找不到指定的 .class 文件。相反,在找到它之后,一些问题阻止了类的加载。

两个常见的原因是命名问题(类在类路径结构中的错误位置,相对于其内部声明的包名称,或者只是错误命名),或者加载执行验证所需的其他类时出现问题命名的类。有时问题是由于类的静态初始值设定项中的异常造成的。

关于android - Android 上的 NoClassDefFoundError - 一个非常奇怪的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032010/

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