在Eclipse中,我編寫了一個用於Android的類的包,並在一個android項目中對它們進行了測試,並將測試代碼保存在第二個包中。然後,我使用命令行從我的項目的bin/classes目錄中的所有casses創建一個jar文件(僅用於我的庫包,而不是測試包)。運行「jar tf」將顯示所有以正確包含我的包名稱前綴的類。爲什麼我會在Eclipse中導入類的鏈接失敗導入到Android項目中?
然後,我創建了另一個Android項目與引進我的第一個包裝和使用的方法,這樣一個活動:
import uk.me.stevewaring.nestedsettings.NestedSettingsCommon;
import uk.me.stevewaring.nestedsettings.NestedSettingsReformat;
public class ShowNestedSettings extends Activity implements NestedSettingsReformat
{...
我再對上我的新項目點擊,用於構建路徑添加我的罐子。我的jar顯示在庫下面的java構建路徑的頂部,在底部的Order和Export下面。
一旦我添加了我的jar,來自lint的所有紅色波浪線都抱怨我的包中的方法消失了。
然而,當我嘗試調試我的項目,在LogCat
我得到:
04-27 05:45:44.180: I/dalvikvm(14576): Failed resolving Lcom/example/shownestedsettings/ShowNestedSettings; interface 553 'Luk/me/stevewaring/nestedsettings/NestedSettingsReformat;'
04-27 05:45:44.210: W/dalvikvm(14576): Link of class 'Lcom/example/shownestedsettings/ShowNestedSettings;' failed
,然後運行,因爲運行類不存在失敗。
當我創建原始項目時,我沒有打勾「Mark this project as a library
」這個框,這可能是問題所在嗎?我不確定該複選框有什麼作用。如果這是問題,是否有任何方法可以追溯地應用該操作,或者我需要創建一個完整的新項目並將其複製到其中,然後才能使用它創建一個jar。如果那不是問題,那麼我做錯了什麼?
更多信息: 我刪除了接口的實現,然後當我試圖調試,我收到這樣的:
04-27 05:52:10.919: I/dalvikvm(14677): Could not find method uk.me.stevewaring.nestedsettings.NestedSettingsCommon.initialise, referenced from method com.example.shownestedsettings.ShowNestedSettings.onCreate
04-27 05:52:10.949: W/dalvikvm(14677): VFY: unable to resolve static method 3566: Luk/me/stevewaring/nestedsettings/NestedSettingsCommon;.initialise (Landroid/app/Activity;)V
04-27 05:52:10.949: D/dalvikvm(14677): VFY: replacing opcode 0x71 at 0x0003
這並沒有讓我感到吃驚,NestedSettingsCommon.initialise是第一個打電話給我的活動取得在我的罐子裏編碼。
我也嘗試從Eclipse中導出Jar,而不是從命令行中導出它。這也沒有任何區別。
下訂單和出口,要導出的JAR文件,正確?你需要這樣做(除非庫已經在設備上,這是可疑的) – Guardanis 2013-05-13 14:34:38
我使用了導入外部罐子選項。爲了防止Eclipse做任何不同的事情,我也嘗試從第一個項目(作爲jar)中導出類,但是在第二個項目中我沒有區別,我刪除了原始jar文件並添加了Eclipse創建的文件。 – 2013-05-13 19:38:59
我的意思是,如果你點擊Project> Properties> Java Build Path> Order and Export,庫被檢查了嗎?這可能需要。 – Guardanis 2013-05-13 21:50:07