Android:获取错误:转换为Dalvik格式失败

Android:获取错误:转换为Dalvik格式失败,android,Android,我正在android上构建一个应用程序,遇到了一个错误,在网上搜索时,遇到了你的帖子,并更改了eclipse.ini以增加Xms和Xmx参数,但这个错误仍然没有消失 我正在Mac OS上使用Eclipse IDE for Java和Android SDK 2.1。请帮助我或者给我指一个可能知道的人 顺便说一句,只有在添加外部jar文件(我的项目需要这些文件)时才会发生此错误。下面是我在类路径中的外部jar文件列表。) 来自apache的httpclient-4.0.1.jar 来自apache

我正在android上构建一个应用程序,遇到了一个错误,在网上搜索时,遇到了你的帖子,并更改了eclipse.ini以增加Xms和Xmx参数,但这个错误仍然没有消失

我正在Mac OS上使用Eclipse IDE for Java和Android SDK 2.1。请帮助我或者给我指一个可能知道的人

顺便说一句,只有在添加外部jar文件(我的项目需要这些文件)时才会发生此错误。下面是我在类路径中的外部jar文件列表。)

  • 来自apache的httpclient-4.0.1.jar
  • 来自apache的httpcore-4.0.1.0
  • 来自apache的commons-codec-1.3.jar
  • 来自apache的commons-logging-1.1.1.jar
  • 来自谷歌的json_simple-1.1.jar
以下是完整的错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/apache/commons/logging/impl/AvalonLogger;
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processClass(Main.java:301)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:278)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.access$100(Main.java:56)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf <http://com.android.dx.cf.direct.ClassPathOpener.pro> .direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processOne(Main.java:247)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.run(Main.java:139)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[2010-05-02 21:57:05 - MyApp]     at java.lang.reflect.Method.invoke(Method.java:592)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.sdk.DexWrapper.run(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.executeDx(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.build(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
[2010-05-02 21:57:05 - MyApp] 4 errors; aborting
[2010-05-02 21:57:05 - MyApp] Conversion to Dalvik format failed with error 1
意外的顶级异常:
java.lang.IllegalArgumentException:已添加:Lorg/apache/commons/logging/impl/AvalonLogger;
[2010-05-0221:57:05-MyApp]位于com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2010-05-0221:57:05-MyApp]位于com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main.processClass(Main.java:301)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main.processFileBytes(Main.java:278)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main.access$100(Main.java:56)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229)
[2010-05-0221:57:05-MyApp]位于com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[2010-05-0221:57:05-MyApp]位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[2010-05-0221:57:05-MyApp]位于com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main.processOne(Main.java:247)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
[2010-05-0221:57:05-MyApp]位于com.android.dx.command.dexer.Main.run(Main.java:139)
[2010-05-02 21:57:05-MyApp]在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
[2010-05-0221:57:05-MyApp]在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[2010-05-0221:57:05-MyApp]在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[2010-05-0221:57:05-MyApp]位于java.lang.reflect.Method.invoke(Method.java:592)
[2010-05-0221:57:05-MyApp]位于com.android.ide.eclipse.adt.internal.sdk.DexWrapper.run(未知来源)
[2010-05-0221:57:05-MyApp]位于com.android.ide.eclipse.adt.internal.build.ApkBuilder.executex(未知来源)
[2010-05-0221:57:05-MyApp]位于com.android.ide.eclipse.adt.internal.build.ApkBuilder.build(未知来源)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
[2010-05-0221:57:05-MyApp]位于org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
[2010-05-0221:57:05-MyApp]位于org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
[2010-05-0221:57:05-MyApp]org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
[2010-05-0221:57:05-MyApp]位于org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
[2010-05-0221:57:05-MyApp]位于org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
[2010-05-0221:57:05-MyApp]4个错误;流产
[2010-05-02 21:57:05-MyApp]转换为Dalvik格式失败,错误为1
意外的顶级异常: java.lang.IllegalArgumentException: 已添加: Lorg/apache/commons/logging/impl/AvalonLogger

您正在尝试向项目中添加两次
org.apache.commons.logging.impl.AvalonLogger
。不要那样做


此外,您通过JARs添加的大部分内容已经在Android中,例如HttpClient。这可能是您的错误的原因。

我写了一篇博客文章,介绍了此错误的一个可能原因及其解决方案。希望这能有所帮助。

我也有这个,但我提前确定我的jar文件中没有重复的类。这是处理同一个jar或其他东西的多次加载的另一个问题。类路径和引用库的列表看起来很合适。经过一番周旋后,以下几点组合将其修复:

  • 我使用的是另一个外部jar,它也是目录中的本地jar。我从构建路径中删除了它,并从本地jar中重新添加了它
  • 我移除了所有的外部罐子,并一次一个地重新添加它们,以确保它们是正确的
  • 我删除了项目中的.classpath文件以及bin和gen目录
  • 我在Eclipse中清理了项目,强制重新生成文件
  • 我还按照构建顺序在gen目录上方的jar文件中来回移动
上述的一些组合似乎解决了这个问题。如果发生了