无法执行dex:多个dex文件定义了Lcom/myapp/R$array;

Posted

技术标签:

【中文标题】无法执行dex:多个dex文件定义了Lcom/myapp/R$array;【英文标题】:Unable to execute dex: Multiple dex files define 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 文件。它会起作用的。 在以下链接中查看我的答案。 ***.com/a/38391449/3702595 【参考方案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】:
    关闭日食。 删除项目文件夹中的 bin 文件夹。 启动 eclipse 并清理您的项目。 现在运行,问题应该消失了

【讨论】:

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 也是一个问题。)

所以解决办法是:

    从源列表和项目列表中设置的 Java 构建路径部分中删除所有引用的 Android 库源和项目引用 确保纯 Java 依赖项列在项目列表中,并在“订单和导出”选项卡中选中,以便将类包含在 apk 中 确保所有 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】:

我的解决方案:

    备份您的代码!

    导航到您的项目工作区(不是您的项目)并运行以下命令:

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

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

    dev1:eclipse$ ./eclipse 清除

    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 文件,清理项目及其工作。

【讨论】:

以上是关于无法执行dex:多个dex文件定义了Lcom/myapp/R$array;的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 在控制台中显示以下消息:无法执行 dex

多个dex文件定义Lcom/google/android/gms/internal/measurement/zzabn

意外的***异常:com.android.dex.DexException:多个 dex 文件定义

多个 dex 文件定义 Lcom/google/firebase/FirebaseException

多个 dex 文件定义 Lorg/apache/cordova/BuildHelper

如何修复将字节码转换为 dex 的错误原因:com.android.dex.DexException:多个 dex 文件定义 Lorg/apache/http/conn/ssl/AbstractVer