APKファイルにはinterface IA
クラスがあります。 IAのimplementation MA
を含むjarファイルを作成します。その瓶はGlobal class
とB class
です。 jarはデータディレクトリからDexclassloaderで動的にロードされます。dex jarを動的にロードするときにjava.lang.NoSuchMethodErrorが発生するのはなぜですか?
interface IA {
test();
}
class Global {
IA instance; //refer to MA instance.
}
class B {
....
instance.test() ; // throw NoSuchMethodError
....
}
ただし、インスタンスのテストメソッドをリフレクションで呼び出すことは可能です。
なぜですか?確かに私はClassloaderやDexClassloaderのいくつかのプリンシパルに精通していません。誰かが私のために説明を与えることができますか?ありがとう
このメソッドは実装されていません。インターフェイスはメソッドの宣言を持っています。そしてあなたは途中で反射を使用していません。 – Batty
@Batty Instanceは、apkクラスのインタフェースIAを実装するMAインスタンスです。 –