【问题标题】:Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;无法执行dex:多个dex文件定义了Lcom/myapp/R$array;
【发布时间】:2011-12-13 18:59:19
【问题描述】:

自从更新到ADT 14 后,我无法再构建我的项目。它在更新之前构建良好。

错误:

[2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
[2011-10-23 16:23:29 - myProj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

已经报告了类似的问题,我已经尝试了那里的建议,包括

  • 正在重启Eclipse
  • 清理项目并重建 - 禁用“项目->自动构建”选项,然后“清理”和“构建”项目,然后尝试运行。将“自动构建”选项重置为开启
  • 重新安装Android开发者工具
  • 重新安装 Eclipse(更新到最新版本 3.7.1)
  • 创建了一个从文件系统导入的新项目
  • 从 subversion 创建了一个新项目。

【问题讨论】:

  • 你是在 windows 还是 mac 上工作 .. 因为我想遵循以下答案,但我不确定他们是否会在 mac 上工作 .. 谢谢
  • 如果您已经导入了库项目并且还在 lib 文件夹中导入了库 JAR,那么您必须从您的 lib 文件夹以及 [Build Path -> Configure Build Path] 中删除 jar 文件。它会起作用的。
  • 在以下链接中查看我的答案。 stackoverflow.com/a/38391449/3702595

标签: android eclipse adt android-sdk-tools dex


【解决方案1】:

我遇到了同样的问题,很奇怪,因为它只在使用 Eclipse 时发生(但使用 Ant 没问题)。 这就是我修复它的方法:

  • 右击Project Name
  • 选择Build Path -> Configure Build Path
  • Java Build Path 中,转到标签Order and Export

  • 取消选中您的 .jar

仅有时: 在 Order and Export 选项卡中,我没有任何 jar 库,因此我未选中 Android Private Libraries 项目。现在我的项目正在运行。

【讨论】:

  • 在我的项目中,我在构建路径中包含了来自 sdk 目录的支持库,并且在“libs”文件夹中包含支持库以支持 ant 构建。我取消选中一个,它解决了我的问题。
  • 在上次构建和启动之间的某个时间,我的项目中神秘地出现了一个新库:“Android Private Libraries”,其中包含我已经引用的支持库。于是这个神秘的“多个dex文件定义____”出现了。检查 Java Build Path 并看到这个新项目,并取消选中最初包含的支持库为我解决了这个问题。
  • 非常感谢。这是正确的解决方案。我真的不知道为什么eclipse有这么多的错误。现在的情况是我只有 2 个小时可以编码,而我必须找到 6 个小时来解决这类不必要的问题。
  • 在订单和导出选项卡中我没有任何 jar 库,所以我没有选中 Android Private Libraries 项目。现在我的项目正在运行。
  • 在我的例子中,我有一个 duplicate 的“android-support-v4.jar”。当我删除它时,错误消失了
【解决方案2】:

在清理了以前版本的工具留下的一些目录和文件后,我的问题得到了解决。 ADT Rev 14 changes where binaries are stored。我删除了整个 bin 目录,重新启动 Eclipse 并清理了构建并强制重建。最初这似乎可以解决问题,但在下一次运行后问题又出现了。

我终于发现我的 bin 目录包含在项目构建路径中。我从构建路径中排除了 bin 并重复了上述步骤。这解决了我的问题。

【讨论】:

  • 这到底是什么谷歌。即使使用 R15,这个问题也会不断出现。
  • 我编辑了上面的解决方案以包含最终解决方案。现已永久解决。
  • 简而言之,没有人真正知道为什么会发生问题,什么意味着以及如何解决它(我在 Java 构建路径中没有任何 bin 目录)。由于这些原因,我避免更新到 R15,而继续使用 R9。但我仍然有a similar problem,看不到任何线索。任何提示或帮助将不胜感激。
  • @BillTheApe - 同意。这太令人沮丧了,而且代价高昂。
  • @TRedman 我终于找到了solve the problem。不明白为什么。不要笑。大声笑+1。
【解决方案3】:

[为我解决]

Eclipse 项目属性->Java 构建路径->排序和导出

取消选中 Android 私有库。

【讨论】:

  • 对我没有帮助
  • 非常感谢帮助我
【解决方案4】:

以上都没有帮助。 到头来还是一个简单的问题。

我有一个使用 FacebookSDK 和 ViewPagerIndicator 作为库项目的项目。 所有这些都是基于 Android API 16 构建的,这两个项目使用了 android 支持库 vX(X 不是 16!)

我为这两个项目添加了一个外部 JAR 并将其指向 \extras\android\v4... 并且还删除了我在他们的 libs 文件夹中的 v4 jar。

清理所有项目并重新构建。

瞧!

我收到的确切错误: 无法执行 dex:多个 dex 文件定义 Landroid/support/v4/view/PagerAdapter;转换Dalvik格式失败:无法执行dex:多个dex文件定义Landroid/support/v4/view/PagerAdapter;

【讨论】:

    【解决方案5】:

    这个问题发生在我身上,我的 libs 文件夹中有一个名为 gson-2.2.2.jar 的外部 .jar,但由于某种原因,其中有两个,gson-2.2.2.jar 和 gson-2.2.2 .jar(1),我只是删除了后者,我的项目再次构建良好。

    【讨论】:

    • 当 libs 文件夹中有一个旧的 jar 文件并将其链接到同一工作区中的新 jar 时,我遇到了类似的问题。当 ADT 为同一个符号找到多个定义时,它会产生这样的错误。删除 libs 文件夹中的旧 jar 文件为我修复了它。
    • 外部 jar 是问题的原因之一,在我的情况下也是如此。我刚刚在我的/libs 中有一个来自先前实验的剩余 jar,从而生成了一个库项目和从中生成的 .jar。删除/libs 下的那个jar 解决了这个问题。 +1
    【解决方案6】:
    1. 关闭日食。
    2. 删除项目文件夹中的 bin 文件夹。
    3. 启动 eclipse 并清理您的项目。
    4. 现在运行,问题应该消失了

    【讨论】:

    • Mateus Viccari 的 回答解决了我的问题,我删除了重复的库,它就像魅力一样工作..
    • 为我工作。如果 manifest file 被 eclipse 从 bin 目录中删除,请手动添加并再次清理项目。
    • 为我工作。还要确保在两个不同的地方没有相同的 .jar(在我的情况下,我在库项目和引用该库项目的项目中都有它。似乎 Eclipse 只是出于某种原因自动添加了它)
    • 对我来说,我刚刚清理了整个工作区。仅仅清理项目是不够的。我相信我的问题与在清理操作过程中将其中一个项目切换到“库”有关
    • 对我没有帮助
    【解决方案7】:

    正如其他人所提到的,当您在构建路径中有同一个类的多个副本时会发生这种情况 - 在您的类路径中包含 bin/ 是保证此问题的一种方法。

    对我来说,这发生在我将 android-support-v4.jar 添加到我的 libs/ 文件夹时,并且 eclipse 以某种方式向 bin/classes/android-support-v4.jar 添加了第二个副本。

    删除 bin/classes 中的额外副本解决了问题 - 不确定 Eclipse 为何在那里制作副本。

    你可以用这个来测试

    grep -r YourOffendingClassName YourApp | grep 罐子

    【讨论】:

      【解决方案8】:

      对我来说,我只需右键单击项目 -> 构建路径 -> 配置构建路径 -> 库 -> 删除依赖项

      在它工作之后。

      【讨论】:

        【解决方案9】:

        如果您有两个包含相同类名的 jar,例如我有两个库:jsr311-api-1.1.1.jar 和 jersey-core-1.17.1.jar,它们都包含类 javax.ws.rs.ApplicationPath。我删除了 jsr311-api-1.1.1.jar,它工作正常。

        【讨论】:

        • 这对我来说是完美的解决方案。我添加了两次相同的库。谢谢。
        【解决方案10】:

        facebooksdk.jar 添加到已经依赖于 android-support-v4.jar 的项目后,我遇到了这个错误。由于 facebooksdk.jar 已经包含自己的 android-support-v4.jar,因此存在冲突。从项目 Properties / Java Build Path / Libraries 中删除较早的 android-support-v4.jar 解决了我的问题。

        【讨论】:

          【解决方案11】:

          转到 Project/properties 和 Java Build Path取消选中 Android Private Libraries

          完成

          【讨论】:

            【解决方案12】:

            我从构建路径中删除了 Android 依赖项并且它起作用了。

            编辑:忽略它。我的 Maven 依赖项和 libs 文件夹中有相同的 jar。我删除了 lib 文件夹中的那个。

            【讨论】:

            • 从构建路径中删除 Android 依赖项破坏了我的项目。幸运的是,通过右键单击项目 > Android 工具 > 修复项目属性很容易恢复。
            • 在某些情况下删除 android 依赖项并重新生成它可以解决一些问题。但在我的编辑中,情况并非如此。
            【解决方案13】:

            你可能有installed r14,这个错误可能是由于平台工具更新导致的,你必须重新安装你的sdk

            【讨论】:

            • 我刚刚完全清除了我的 SDK,并从下载的 zip 文件中重新安装了它,然后使用 Android SDK 管理器加载了 Android API。我寄予厚望,但问题仍然存在。
            • windows中有一个.android隐藏文件夹,你也应该删除它。
            • 存在同样的问题
            【解决方案14】:

            对我来说,只要我的项目中涉及 Android 库项目,这个问题就存在。因此,当我删除所有库并按照您说的做时,我可以再次运行我的应用程序。 如果涉及库,即使 bin-removal-trick 技巧也行不通。

            我不明白为什么这个错误今天首次出现,因为我已经使用 ADT 14 好几天了。不过,还有其他一些错误让我很开心。

            【讨论】:

            • 许多解决方案看起来像一些巫毒教的东西...... :)
            【解决方案15】:

            删除 bin 文件夹还不够,我还删除了 gen 文件夹。然后在两次重建后,dex 错误消息消失了。

            【讨论】:

              【解决方案16】:

              Project Explorer中选择项目,右键选择Properties -> Java Build Path -> Source em> -> 勾选允许源文件夹的输出文件夹

              【讨论】:

                【解决方案17】:

                我基本上面临同样的问题。 我删除了 BIN 文件夹,然后从 eclipse 中删除了 Order 和 Import 的未使用的 jar 文件。 在那之后它工作了

                【讨论】:

                  【解决方案18】:

                  我参加这个聚会迟到了,但添加我自己的经验,以便我以后可以再次找到它:)

                  我在升级 android sdk 和 eclipse 插件后遇到了这个问题。任何升级都会受到惩罚!

                  我的问题与库项目有关,我的应用程序引用了标准 java 项目和 android 库项目。我注意到 Java 构建路径设置包括源列表中的 android 库项目 src 和 res 文件夹(向所有提到源中的 bin 是问题的人投票,src 和 res 也是一个问题。)

                  所以解决办法是:

                  1. 从源列表和项目列表中设置的 Java 构建路径部分中删除所有引用的 Android 库源和项目引用
                  2. 确保纯 Java 依赖项列在项目列表中,并在“订单和导出”选项卡中选中,以便将类包含在 apk 中
                  3. 确保所有 Android 库依赖项都列在项目属性的 Android 部分中,在已检查的 SDK 版本下方的库部分中。

                  一直以来都是从其他解决方案中拼凑起来的!呸!

                  【讨论】:

                  • 说得好!经过大量工作,我得出了相同的结论。我只是想补充一点,如果您的任何库项目包含其他库项目或纯 Java 依赖项,它们都必须以相同的方式添加,否则会出现此错误。如果您对所有项目都遵循上述规则,那么您应该没有任何问题。
                  • 还有一件事……看来,如果您不需要导出项目或库项目的 Android 私有库,请不要。如果多个项目或库项目导出它,您将收到多个 dex 文件错误。
                  【解决方案19】:

                  我从 adt 14 升级到 15 时遇到了这个问题,为了让它工作,我最终只删除了 .eclipse 文件夹(连同我的设置)并重新安装了 adt 15。

                  【讨论】:

                    【解决方案20】:

                    在阅读了 Terrys 关于删除 bin 目录的回复和 Larrys 关于 ANT 目录位置的回复后:

                    我将位于项目 BIN 目录中的文件移动到 BIN/CLASSES 并启动并运行。

                    编辑 1 然后在第二次运行失败...doh

                    编辑 2 如此关闭的 Eclipse 将文件移回原始位置,并且一切正常……嗯,什么? 我不会假装知道为什么会这样。如有变化会更新。

                    编辑 3 我从备份中注意到 BIN 目录和 BIN/CLASSES 中确实存在重复文件。

                    所以答案是:两个位置都没有文件。至少对我来说这是行得通的。

                    【讨论】:

                    • 尽量减少以下答案:有用的结论,然后是支持事实。避免历史叙述AMAP;人们倾向于标记它,认为它“不是答案”。
                    • 为此欢呼,感谢任何有助于使我的散文更清晰的帮助
                    【解决方案21】:

                    修改你的 eclipse.ini 文件并将最大内存参数设置为

                    -Xmx1024m
                    

                    然后重启你的电脑。

                    它对我有用。

                    【讨论】:

                    • 没什么关系,给更多内存并不能解决依赖问题
                    【解决方案22】:

                    找到了我相信的解决方案??

                        [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;
                    

                    它说:“Lcom/coremedia/iso/AbstractBoxParser$1”恰好是我导入的导致问题的库的位置。寻找 com.codemedia.iso.AbstractBoxParser$1.class 和 .AbstractBoxParser.class.... 拿了那个 jar,解包,删除了这两个文件,然后重新打包为 .zip,添加到库中,清理并工作!对我来说不再有冲突! (也没有更新或额外下载)

                    【讨论】:

                      【解决方案23】:

                      我的 libs 文件夹中有两个不同版本的 Cordova .jar 文件,我删除了一个我什至没有使用的版本,它立即生效。 很奇怪,因为我之前没有注意到它之前工作过,然后突然停止工作......

                      【讨论】:

                        【解决方案24】:

                        ADT R14 更新更改了类进入 bin/classes 目录的位置(请参阅http://tools.android.com/recent/buildchangesinrevision14)。如果您使用的是 ANT,则应将类的路径从 bin 更改为 bin/classes。这对我有用。

                        【讨论】:

                        • 我正在使用 Eclipse。您知道在 Eclipse 中更改类路径的位置吗?
                        【解决方案25】:

                        我的解决方案:

                        1. 备份您的代码!
                        2. 导航到您的项目工作区(不是您的项目)并运行以下命令:

                          dev1:workspace$ cd ~/Documents/workspace/.metadata/.plugins/ dev1:workspace$ rm -rf org.eclipse.core.resources

                        3. 导航到您的 Eclipse 目录并输入以下命令:

                          dev1:eclipse$ ./eclipse 清除

                        4. Eclipse 将从一个空的工作区开始 - 不要担心您的项目仍然存在。 简单地从现有资源创建新项目,东西应该是肉汁。

                        我收到的确切错误: [2012-02-07 14:15:53 - Dex Loader] 无法执行 dex:多个 dex 文件定义 Landroid/support/v4/view/PagerAdapter; [2012-02-07 14:15:53 - ProjectCloud] 转换为 Dalvik 格式失败:无法执行 dex:多个 dex 文件定义 Landroid/support/v4/view/PagerAdapter;

                        【讨论】:

                          【解决方案26】:

                          我有几个库项目,在 AndroidManifest 中指定了相同的包名称(因此 R.java 不会生成重复的字段名称)。我必须从所有库项目的 AndroidManifest.xml 中删除任何权限和活动以删除错误,因此 Manifest.java 没有被多次创建。希望这可以帮助某人。

                          【讨论】:

                            【解决方案27】:

                            在尝试了所有其他建议但没有成功后,我删除了项目“bin”目录的所有内容,然后再次运行 eclipse,它成功了。

                            【讨论】:

                              【解决方案28】:

                              我将一个非库项目转换为一个库项目,但它在 libs 文件夹中有一个以前构建的 jar 文件。删除此 jar 文件会导致此错误消失。

                              【讨论】:

                                【解决方案29】:

                                我遇到了同样的问题,然后我在推送我的应用程序时看到一些 jar 文件被加载了两次,因此出现了多个 dex 错误。只需转到您的项目属性-> Java 构建路径并尝试取消选中正在加载两次的 jar。

                                【讨论】:

                                  【解决方案30】:

                                  [为我解决]

                                  通过删除重复的库“JAR 文件”,然后删除 BuildConfig.java 文件,清理项目及其工作。

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2013-01-22
                                    • 2014-02-20
                                    • 1970-01-01
                                    • 2013-03-20
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2014-03-14
                                    相关资源
                                    最近更新 更多