Es gibt eine interface IA
Klasse in der APK-Datei. Ich erstelle ein Glas mit IA implementation MA
. Das Glas hat eine Global class
und B class
. Das Jar wird dynamisch mit Dexclassloader aus dem Datenverzeichnis geladen.Warum java.lang.NoSuchMethodError, wenn ein Dex-Jar dynamisch geladen wird?
interface IA {
test();
}
class Global {
IA instance; //refer to MA instance.
}
class B {
....
instance.test() ; // throw NoSuchMethodError
....
}
Aber es ist in Ordnung, Instanz-Testmethode durch Reflexion aufzurufen.
Warum? Sicherlich kenne ich einige Prinzipien von Classloader oder DexClassloader nicht. Könnte jemand eine Erklärung für mich geben? Danke
Sie haben die Methode nicht implementiert. Interface hat nur eine Erklärung der Methode. Und Sie verwenden übrigens keine Reflexion. – Batty
@Batty Instance ist eine MA-Instanz, die die Schnittstelle IA in der apk-Klasse implementiert –