簡體   English   中英

為什么動態加載dex jar時java.lang.NoSuchMethodError?

[英]Why java.lang.NoSuchMethodError when dynamically load a dex jar?

APK文件中有一個interface IA類。 我創建了一個包含IA的implementation MA的jar。 jar有一個Global classB class 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刪除所有內部文件)並且仍然能夠實例化我的類(雖然我猜它只適用於獲取零參數的默認構造函數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM