gpt4 book ai didi

java - 为什么动态加载 dex jar 时会出现 java.lang.NoSuchMethodError 错误?

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:43 24 4
gpt4 key购买 nike

APK文件中有一个接口(interface)IA类。我创建了一个包含 IA 的实现 MA 的 jar。该 jar 有一个 Global 类B 类。该 jar 是使用 Dexclassloader 从数据目录动态加载的。

interface IA {
test();
}

class Global {
IA instance; //refer to MA instance.
}

class B {
....
instance.test() ; // throw NoSuchMethodError
....
}

但是通过反射调用实例的测试方法是可以的。

为什么?当然我不熟悉Classloader或DexClassloader的一些原理。有人能给我解释一下吗?谢谢

最佳答案

我也遇到了 NoSuchMethod 错误,经过一些测试后,我发现问题是 JAR 内的 DEX 文件没有按预期命名为classes.dex。应用程序能够创建类的新实例这一事实并不一定意味着 DEX 已正确加载,我使用空 JAR 对其进行了测试(即通过 7-ZIP 删除了所有内部文件),并且仍然能够实例化我的类(尽管我猜它只能与获取零参数的默认构造函数一起使用)。

关于java - 为什么动态加载 dex jar 时会出现 java.lang.NoSuchMethodError 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37050601/

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