我正在开发一个在尝试new
某个类时抛出 NoSuchMethodError 的应用程序。代码看起来像这样......
Bar bar = new Bar(Bar.Type.WHATEVER, 1f);
...错误是...
Caused by: java.lang.NoSuchMethodError: com.foo.Bar.<init>
我在网上看到的所有内容都与针对库的一个版本进行编译并使用没有相同方法/签名的另一个版本运行有关。但是,在我的情况下,有问题的类在一个 JAR 中,其类正在应用程序的 APK 中导出。所以不应该在运行时使用不同版本的类,对吧?
最近更改的构造函数参数,Bar
因此我执行了以下操作来验证更改是否已进入 APK:
- 打开APK并提取classes.dex
- 使用 dex2jar 将 DEX 转换为 JAR
- 打开 JAR 并提取有问题的类。
- 使用 jclasslib 检查类并验证构造函数是否存在。我懂了
<init>(Lcom/foo/Bar$Type;F)
在这一点上,我很困惑。有谁知道可能导致此错误的原因是什么?