意外的顶级异常:java.lang.IllegalArgumentException:已添加

mak*_*ron 10 eclipse macos android dalvik maven

我是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
Run Code Online (Sandbox Code Playgroud)

我为这个愚蠢的事情杀了很多时间.显然,这是已知的问题,但对我来说没有任何作用.
是)我有的:

操作系统 - OS X,我认为这很重要;
IDE - eclipse 3.7.1
ADT - 版本:15.0.1.v201111031820-219398
构建工具 - Maven

到目前为止我尝试过:
- 属性 - > Java构建路径 - >库删除除Android xyz之外的所有库,然后是Maven->更新项目配置,也用于清理项目;
- 关闭和重新开启日食的魔法;
- 与删除和重新创建项目及其库共享(根据错误消息的文本,在主项目中使用的两个库之一中存在一些重复的源).

在上面的一个变体(通常是第一个)之后它开始工作,但我可以花20分钟使其工作或几个小时......,今天我根本无法完成它.

任何想法将不胜感激.

Ric*_*ell 6

如果您的Eclipse类路径包含多个相同名称/包的类,ADT将抛出这样的异常.在这种情况下,它AvailabilityRequest在Maven依赖项中遇到了多个类的实例.

您可以通过查找哪些类路径依赖项包含相同的类文件来解决此问题(按Ctrl-Alt-T并在AvailabilityRequest中键入将执行此操作).

然后,您可以在m2e POM编辑器中打开POM,然后转到"依赖关系层次"选项卡.这将允许您选择无关的依赖关系,然后可以通过右键单击并选择"Exclude Maven Artifact ..."来排除该关联,这将自动<exclusions>向POM 添加元素.这将从Eclipse类路径中删除重复的JAR,并允许您构建项目.

此外,您应该注意添加到POM的依赖项.


mak*_*ron 3

嗯,据我了解,这里最主要的是我使用Maven作为构建工具。我可以毫无问题地构建和部署项目,但无法从环境(eclipse)启动它。

如果我没记错的话,当你进入 eclipse 的Run->Run Configurations并创建一个Android 应用程序来启动你的项目时,你基本上会要求 eclipse (Android SDK) 使用Ant为你构建 .apk ,而不是使用 maven。Eclipse 使用 Ant 构建项目并将生成的 .apk 推送到设备/模拟器。但由于项目的所有设置都在.pom文件中,Ant 无法构建项目并给出此类错误。

解决方案:
部署应用程序后,直接从设备/模拟器启动应用程序,而不是通过“运行”菜单。如果你想调试你的应用程序,请使用 DDMS 的调试,而不是 eclipse 提供的调试。如果您不知道 DDMS 在哪里(就像我一样)- 在Mac中,它是Window->Open Perspective->Other...从菜单中选择 DDMS;您可以将其与 eclipse 的DebugJava一起作为书签。在 DDMS 中,您将找到所有很酷的工具,包括调试。

PS这是来自初学者和初学者的回答...如果您发现我有错,请告诉我或随时编辑我的答案。