2012-02-06 62 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