【问题标题】:Android: Getting Error: Conversion to Dalvik format failedAndroid:出现错误:转换为 Dalvik 格式失败
【发布时间】:2010-05-03 17:09:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 有解决办法吗?我在 intellij 也看到了。
  • intellij idea 的解决方案是什么? ADT没问题

标签: android


【解决方案1】:

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

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

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

【讨论】:

  • 这是解决我问题的唯一解决方案。感谢您发布此内容
  • 我从构建路径中删除了 jar。现在项目根本没有运行。
【解决方案2】:

意外的顶级异常: java.lang.IllegalArgumentException: 已经加入: Lorg/apache/commons/logging/impl/AvalonLogger;

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

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

【讨论】:

    【解决方案3】:

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

    • 我使用了不同的外部 jar,它也在目录中的本地。我将其从构建路径中删除,然后从本地 jar 中重新添加。
    • 我删除了所有外部 jar 并一次重新添加一个,以确保它们是正确的。
    • 我删除了项目中的 .classpath 文件以及 bin 和 gen 目录。
    • 我在 Eclipse 中清理了项目,强制重新生成文件。
    • 我还按照构建顺序在 gen 目录上方的 jar 文件中随机播放。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 感谢您在博客上的长篇描述,可惜这对我没有帮助;(
      【解决方案5】:

      我猜你把你的 jar 放在 example library 的文件夹中,然后从这个文件夹构建路径。您只需删除此 jar 文件并尝试从项目中选择 property,然后选择 Java 构建路径 -> 添加外部 jars 文件。它会正常工作。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

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

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

            【讨论】:

              【解决方案9】:

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

              最后解决方案变得更加简单:ProjectAndroid ToolsFix project propieties

              现在我可以导出 apk。

              【讨论】:

                【解决方案10】:

                右键单击 src 和 gen 文件夹,然后选择 Build Path > Remove from Build Path。 然后 右键单击>构建路径>用作源文件夹

                【讨论】:

                  【解决方案11】:

                  当我尝试在不兼容的 android 版本中运行代码时(即 2.2,当特定库需要 4.0 才能工作时)时,我有时会遇到这种情况

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-12-07
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-02-08
                    • 2011-06-29
                    相关资源
                    最近更新 更多