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)
この時点で、私は困惑しています。このエラーの原因は誰にも分かりますか?