2013-05-13 23 views
4

在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,而不是從命令行中導出它。這也沒有任何區別。

+1

下訂單和出口,要導出的JAR文件,正確?你需要這樣做(除非庫已經在設備上,這是可疑的) – Guardanis 2013-05-13 14:34:38

+1

我使用了導入外部罐子選項。爲了防止Eclipse做任何不同的事情,我也嘗試從第一個項目(作爲jar)中導出類,但是在第二個項目中我沒有區別,我刪除了原始jar文件並添加了Eclipse創建的文件。 – 2013-05-13 19:38:59

+0

我的意思是,如果你點擊Project> Properties> Java Build Path> Order and Export,庫被檢查了嗎?這可能需要。 – Guardanis 2013-05-13 21:50:07

回答

15

確保JAR設置爲與應用程序導出:

項目>屬性> Java構建路徑>訂單和出口

+1

謝謝!我開始把我的頭髮撕掉。 – alekop 2013-12-02 22:37:01

+0

我該如何在android studio中做到這一點?我真的需要解決方案... – user198923 2014-10-02 20:28:02

+0

快速谷歌爲您:http://stackoverflow.com/a/20314875/1426565 – Guardanis 2014-10-06 14:24:12

相關問題