我是
Android的新手,试图启动正在构建和部署的项目.但是每次尝试从eclipse启动应用程序时,我会收到以下错误:
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 – eclipse 3.7.1
ADT – 版本:15.0.1.v201111031820-219398
构建工具 – Maven
到目前为止我已经尝试过
– 属性 – > Java Build Path->除去Android x.y.z之外的所有库的库,然后Maven->更新项目配置,也清理项目;
– 魔法关闭并重新开启日食;
– 删除和重新创建项目及其库的舞蹈(根据错误消息的文本,有一些重复的源,它们位于主项目中使用的2个库之一).
之后的一个变体(通常是第一个)它开始工作,但我可以花20分钟使其工作或几个小时…,今天我根本无法做到这一点.
任何想法将不胜感激.
解决方法
如果您的Eclipse类路径包含多个相同名称/包的类,ADT将抛出一个异常.在这种情况下,它遇到Maven依赖关系中的AvailabilityRequest类的多个实例.
您可以通过查找哪些类路径依赖关系在其中包含相同的类文件来解决此问题(按Ctrl-Alt-T并输入AvailabilityRequest将执行此操作).
然后,您可以在m2e POM编辑器中打开POM,然后转到“依赖关系层次”选项卡.这将允许您选择无关的依赖关系,您可以通过右键单击并选择“排除Maven Artifact …”来排除这些依赖关系,这将自动添加<排除>元素到您的POM.这将从Eclipse类路径中删除重复的JAR,并允许您构建项目.
此外,您应该注意添加到POM中的依赖关系.