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

时间:2010-05-03 17:09:57

标签: android

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

我在Mac OS上使用Eclipse IDE for Android和Android SDK 2.1。请帮助或请指出可能知道的人。

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

  • 来自apache的httpclient-4.0.1.jar
  • httpcore -4.0.1.jarfrom apache
  • 来自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

11 个答案:

答案 0 :(得分:21)

在r14中,他们改变了引用外部库的方式,并且可能导致此问题。您可以通过从文件夹树中删除链接的文件夹(名称中包含_src)来修复它:

  • 右键单击并选择“构建路径&gt;从构建路径中删除”
  • 弹出窗口将会打开。确保选中“同时取消文件夹与项目的链接”,然后接受它。

请参阅http://android-developers.blogspot.co.uk/2011/10/changes-to-library-projects-in-android.html

答案 1 :(得分:6)

  

意外的顶级例外情况:   java.lang.IllegalArgumentException异常:   已经加入:   Lorg /阿帕奇/公地/记录/ IMPL / AvalonLogger;

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

此外,您通过JAR添加的大部分内容已经在Android中,例如HttpClient。这可能会导致您的错误。

答案 2 :(得分:4)

我也有这个,但我提前确定我的jar文件中没有重复的类。这是处理同一罐子或其他东西的多次装载的另一个问题。类路径和引用库列表看起来合适。经过一些抨击后,下面的一些组合修复了它:

  • 我使用的是另一个外部jar,它也是目录中的本地jar。我从构建路径中删除了它,然后从本地jar重新添加它。
  • 我删除了所有外部罐子,并一次重新添加一个,确保它们是正确的。
  • 我删除了项目中的.classpath文件以及bin和gen目录。
  • 我在Eclipse中清理了项目,强制重新生成文件。
  • 我还在构建顺序中的gen目录上方的jar文件周围乱窜。

以上的某些组合似乎解决了这个问题。如果它再次发生,我会更加小心,看看我是否可以重现它。

答案 3 :(得分:2)

我写了一篇关于此错误可能原因的博客文章及其解决方案here。希望这会有所帮助。

答案 4 :(得分:2)

我猜你把你的jar放在文件夹中,例如库,然后从这个文件夹构建路径。您只需删除此jar文件并尝试从项目中选择属性,然后 Java构建路径 - &gt; 添加外部广告文件。它会正常工作。

答案 5 :(得分:1)

我遇到了这个问题,因为我把.jar放在我的src/目录下,所以Eclipse将它复制到bin/目录并尝试从两个地方链接它。将其从src/移至libs/可解决问题。

答案 6 :(得分:1)

我的问题是由于在图书馆项目中也有相同的项目参考。一些更新以前这是正常的行为,但是由于库处理的变化,我现在需要从我的项目中删除引用,并且只有一个库引用它。

答案 7 :(得分:1)

在使用proguard使用自定义命令进行自定义构建后,这总是发生在我身上。

我通过清空我的eclipse项目目录的bin目录然后清理项目解决了这个问题(Eclipse菜单“project” - &gt;“clean ...”)

显然,proguard在这个目录中弄得一团糟,让Eclipse感到困惑......

答案 8 :(得分:0)

我真的很生气这个问题试图做所有可行的解决方案,但没有一个对我有用:清理项目,重新构建,擦除库,再次链接库,更新proguard,编辑proguard文件......

最后,解决方案更加轻松:项目 Android工具修复项目支持

现在我可以导出apk。

答案 9 :(得分:0)

右键单击src和gen文件夹,然后选择Build Path&gt;从构建路径中删除。 然后 右键单击&gt;构建路径&gt;用作源文件夹

答案 10 :(得分:0)

我不时地尝试在不兼容的android版本中运行代码(即当特定库需要4.0时才能运行2.2)