2012-02-06 68 views
10

我是Android新手,試圖啓動正在構建和部署的項目。但每次我做一個嘗試時間開始從Eclipse的應用程序,我得到這個錯誤:意外的頂級例外:java.lang.IllegalArgumentException:已添加

UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lcom/.../model/AvailabilityRequest$DAY_TIME_PREFERENCE; 
[2012-02-06 17:32:11 - main-app] Dx  at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2012-02-06 17:32:11 - main-app] Dx  at com.android.dx.dex.file.DexFile.add(DexFile.java:163) 
[2012-02-06 17:32:11 - main-app] Dx  at com.android.dx.command.dexer.Main.processClass(Main.java:486) 
... 
[2012-02-06 17:32:11 - main-app] Dx  at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 
[2012-02-06 17:32:11 - main-app] Dx 1 error; aborting 
[2012-02-06 17:32:11 - main-app] Conversion to Dalvik format failed with error 1 

我殺了大量時間用於這種愚蠢的事情。顯然,這是已知的問題,但沒有爲我工作。
我有什麼:

操作系統 - OS X,這很重要,我認爲;
IDE - 日食3.7.1
ADT - 版本:15.0.1.v201111031820-219398
構建工具 - Maven的

我試過到目前爲止:
- 屬性 - > Java構建路徑 - >庫去除除Android xyz之外的所有庫,然後Maven->更新項目配置,以清理項目; - 關閉和重新開啓月蝕的魔法;
- 跳舞與刪除和重新創建項目和它的庫(根據錯誤消息的文本,有一些重複的來源,這是在主要項目中使用的2個庫中的一個)。

經過上述其中一個變體(通常是第一個變體)後,它開始工作,但我可以花20分鐘讓它工作或幾個小時......今天我根本無法做到這一點。

任何想法,將不勝感激。

+0

找到了這個:http://code.google.com/p/android/issues/detail?id=20398#c22似乎有什麼和它有關。 – makaron 2012-02-06 22:21:26

+0

你在使用m2e-android嗎? – 2012-02-07 08:41:11

+0

如果是這樣,你可能想編輯你的問題,使其更清晰。 – 2012-02-07 08:50:12

回答

3

嗯,據我所知,這裏最主要的是我使用maven作爲構建工具。我可以毫無問題地構建和部署項目,但是我無法從環境(eclipse)中啓動它。

如果我沒有錯,當你去到Eclipse的運行 - >運行配置並創建一個Android應用程序發動你的項目,你基本上問的Eclipse(Android SDK中)與構建.apk文件螞蟻爲你,而不是與maven。 Eclipse使用Ant構建項目並將生成的.apk推送到設備/模擬器。但由於該項目的所有設置都在。pom文件,Ant無法構建項目並給出這種錯誤。

解決方案:
權從設備/模擬器啓動應用程序,你部署之後,不通過運行菜單。 如果你想調試你的應用程序,使用DDMS的調試,而不是一個日食提供。 如果你不知道DDMS在哪裏(就像我的情況) - 在Mac它是窗口 - >打開透視 - >其他...從菜單中選擇DDMS;你可以把它作爲一個書籤連同eclipse的調試Java。在DDMS中,您會發現所有很酷的工具,包括調試。

P.S.這是初學者和初學者的回覆......如果你發現我錯了,請告訴我,或者隨時編輯我的答案。

6

如果您的Eclipse類路徑包含多個具有相同名稱/包的類,那麼ADT將拋出這樣的異常。在這種情況下,它會在Maven依賴項中遇到多個AvailabilityRequest類的實例。

您可以通過查找哪些類路徑依賴項包含相同的類文件(擊中Ctrl-Alt-T並鍵入AvailabilityRequest將執行此操作)來解決此問題。

然後,您可以在m2e POM編輯器中打開您的POM,並轉到依賴層次結構選項卡。這將允許您選擇多餘的依賴關係,然後您可以通過右鍵單擊並選擇「排除Maven Artifact ...」來排除這些依賴關係,這會自動將<exclusions>元素添加到您的POM。這將從您的Eclipse類路徑中移除重複的JAR,並允許您構建項目。

另外,您應該注意添加到POM的依賴關係。

+0

試試這個,謝謝! – makaron 2012-02-07 08:59:18

+1

Ricardo,感謝您的支持(+1),我沒有找到解決方案,但是我採取了這樣的方式:它允許我調試應用程序,這是所有這一切的目標。 – makaron 2012-02-07 14:04:14