2010-02-27 56 views
22

我有兩個android項目,ProjA需要ProjB(在Eclipse Properties> Java Build Path> Projects> Add> ProjB中)。每一件事情在Eclipse編譯好了,但是當我運行ProjA我得到一個錯誤:找不到方法XXX,引用方法YYY

Could not find method XXX, referenced from method YYY.

其中XXX - 從ProjB方法。

如何修復設置?

+0

剛剛遇到這種情況 - 包括應用程序啓動時運行時出現的classnotfound錯誤。解決方案:將庫項目源文件夾添加到構建路徑! –

+0

我有同樣的問題!我已經嘗試了一切:添加一個項目引用(如Commonsware建議的),創建一個JAR-fil並將其導入到ProjA中 - 沒有任何作用! – Ted

+1

你有兩種選擇。 1)使ProjB成爲所謂的「Android庫」(參見接受的答案)2)如果ProjB沒有資源(佈局,drawable等),那麼你可以製作普通的Java項目(非Android),並添加android.jar作爲eclipse中Libraries選項卡上的外部jar,並從同一個tab中刪除JRE ... android.jar可以在如下路徑中找到:C:\ android-sdk-windows \ platforms \ android-3 \ android。jar – alex2k8

回答

1

將兩個項目合併爲一個。

或者,讓ProjB構建一個ProjA包含的JAR文件。

或者,將ProjB轉變爲遠程服務,使用通過AIDL暴露的方法,並將ProjA綁定到該服務以使用該方法。

+0

如上所述,這些建議都不起作用。我不斷收到NoClassDefFound錯誤的上述錯誤。但在編譯時,一切看起來都很好......我清理過,重新啓動等等......沒有任何工作。 – Ted

1

如果您不想使用CommonsWare的答案,您可能需要查看您的設計。例如,您可以使用Intents從第一個項目中調用第二個項目。

如果有兩個項目共有的代碼,那麼你可能想把它引入到一個新的項目中,你可以直接將這些文件包含到兩個項目中,但是如果這兩個項目應該一起工作,有不同的方法在Android中允許活動相互呼叫或傳遞信息,並且您可能需要查看這些信息。

34

當使用外部jar(在我的情況下openCSV)時,我有一個類似的問題。 我有一個問題的原因是由於ADT 17(或以上)的變化。 我需要做的是解決這個問題

  1. 在Eclipse中,轉到屬性 - > Java構建路徑 - >訂單和導出。
  2. 標記我的罐子。
  3. 將jar移到列表頂部。

該解決方案被發現 in the following page其中提到一篇非常好的文章。

+0

這對我有效,謝謝 – celoftis

+1

乾杯,我最初認爲這與我的外部項目無關。錯誤是說方法Y不能找到類X,但方法Y在類X中找到了!我在想方法X.Y()不知道它來自哪個類?然後我意識到方法X.Y()實際上與一些外部項目中的數據結構進行交互。所以我去了Order and Export,把Android私有庫移到頂端,瞧!對於任何圍觀者來說,如果你不認爲是另一個項目的話,那麼這個觀點是可信的。你確定嗎? – mgibson

+1

+1我發誓編碼android應用程序將不可能沒有SO。 – Sydwell

0

我已經經歷過這個問題,新的Android打造搖籃系統,我通過運行gradle clean然後再次構建和安裝來修復它。構建系統是複雜的野獸,Google仍然需要完美地解決依賴問題。