396

由于更新到ADT14,我无法再构建我的项目。它在更新之前构建良好。

错误:

[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)
  • 创建了一个从文件系统导入的新项目
  • 从颠覆创建了一个新项目。
4

54 回答 54

462

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

  • 右键单击Project Name
  • 选择Build Path->Configure Build Path
  • Java Build Path中,转到选项卡Order and Export

  • 取消选中您的.jar图书馆

只是有时: 在 Order and Export 选项卡中我没有任何 jar 库,所以我没有选中 Android Private Libraries 项目。现在我的项目正在运行。

于 2013-05-17T10:03:24.750 回答
94

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

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

于 2011-10-25T05:04:39.397 回答
50

[为我解决]

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

取消选中 Android 私有库。

于 2014-11-11T01:56:59.027 回答
46

以上都没有帮助。最后这是一个简单的问题。

我有一个使用 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;

于 2012-11-14T22:34:43.477 回答
36

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

于 2012-12-23T17:01:19.013 回答
31
  1. 关闭日食。
  2. 删除项目文件夹中的 bin 文件夹。
  3. 启动 eclipse 并清理你的项目。
  4. 现在运行,问题应该消失了
于 2012-04-21T06:46:43.303 回答
26

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

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

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

您可以使用以下方法对此进行测试

grep -r YourOffendingClassName YourApp | grep 罐子

于 2013-02-26T22:30:53.213 回答
23

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

在它工作之后。

于 2013-02-06T18:18:32.850 回答
20

如果您有两个包含相同类名的 jar,则可能会发生此错误,例如,我有两个库:jsr311-api-1.1.1.jar 和 jersey-core-1.17.1.jar,两者都包含类 javax.ws .rs.ApplicationPath。我删除了 jsr311-api-1.1.1.jar,它运行良好。

于 2013-08-11T23:21:42.393 回答
19

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

于 2013-03-17T15:48:58.653 回答
18

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

这也是这种错误的另一种情况

完毕

于 2015-01-06T10:44:07.790 回答
15

我从构建路径中删除了 Android 依赖项并且它有效。

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

于 2012-12-06T16:20:47.703 回答
9

您可能已经安装了 r14,这个错误可能是由于平台工具更新引起的,您必须重新安装您的 sdk

于 2011-10-24T01:24:57.233 回答
9

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

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

于 2011-10-25T10:17:35.903 回答
8

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

于 2012-05-16T15:43:09.990 回答
8

Project Explorer中选择项目,右键单击并选择Properties -> Java Build Path -> Source -> 勾选Allow output folder for source folder

于 2012-08-16T14:46:44.857 回答
8

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

于 2013-09-20T11:01:43.260 回答
7

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

我在升级 android sdk 和 eclipse 插件后遇到了这个问题。没有升级不受惩罚!

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

所以解决方案是:

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

从其他解决方案中将所有这些拼凑在一起!呸!

于 2013-04-05T00:23:01.423 回答
6

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

于 2011-10-29T01:16:49.267 回答
6

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

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

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

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

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

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

于 2011-12-04T18:07:45.293 回答
6

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

-Xmx1024m

然后重新启动计算机。

它对我有用。

于 2012-11-27T12:30:41.637 回答
6

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

    [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,添加到库中,清理并工作!对我来说不再有冲突!(也没有更新或额外下载)

于 2013-04-29T04:24:09.630 回答
6

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

于 2013-09-10T07:22:38.450 回答
5

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

于 2011-10-28T17:54:44.967 回答
5

我的解决方案:

  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;

于 2012-02-07T23:24:34.280 回答
5

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

于 2013-02-08T23:42:19.157 回答
4

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

于 2011-11-18T21:26:59.977 回答
4

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

于 2013-01-28T18:59:35.443 回答
4

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

于 2013-01-31T15:02:34.560 回答
4

[为我解决]

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

于 2013-04-28T09:04:53.517 回答
3

尝试删除 R.java 并让 eclipse 重新生成它。

于 2011-10-24T00:21:52.143 回答
3

当我在项目中添加 ActionBarSherlock 作为库时,我遇到了类似的问题。Eclipse ADT v21.0 预创建的 dex 文件据说是为了更快地构建项目。这些 dex 文件与我的 lib 文件夹中的一些 jar 文件相同。所以只保留一个并删除另一个。我删除了 lib 文件夹中的那些,因为 dexed 文件是自动生成的。

于 2013-01-29T09:31:14.813 回答
3

我面临同样的问题。我发现我有一个库项目的问题,在该项目的清单文件中,没有targetSdkVersion属性。我在 (uses-sdk) 标签下添加了该属性。然后清理我的项目。现在我的应用程序运行正常。

于 2014-03-12T15:08:01.793 回答
3

确保在Java Build Path下的Order and Export选项卡中未选中“android-support-v4.jar”

按照步骤:

  1. 项目属性
  2. Java 构建路径
  3. 订购和出口
  4. 取消选中“android-support-v4.jar”
于 2014-08-19T13:40:42.010 回答
3

我已经尝试了上述大部分解决方案,过去其中一些已经奏效。

但是这次他们都没有工作,所以我删除了我的库项目的 .jar 文件。并重建库和应用程序项目。

而这一次成功了!

于 2015-08-30T07:12:28.747 回答
2

上述方法都不适合我,但我的工作就像一个魅力!

当用户使用 eclipse 构建依赖库时会出现问题。所以要得到解决方案

第 1 步:从 Eclipse 中删除库(如支持库项目 v4 或 v13),并永久删除工作区源

第 2 步:重新导入库并将其包含到您的项目中

第 3 步:清理和重建

完毕!

于 2013-11-06T19:45:56.953 回答
2

发现另一个发生此问题的场景:问题是 libs 文件夹被用作项目首选项中的 Source,因此它被导出了两次。通过右键单击 libs 文件夹 -> 构建路径 -> 从构建路径中删除来解决

于 2014-02-05T12:57:09.313 回答
2

这发生在我们的应用程序中,我们有 libs 文件夹gson jar(例如:gson-2.2.4.jar)。同时,我们的 Google Play 服务库也已经有了Gson

我已将其从我的应用程序中删除,并且its work fine now.

于 2014-03-26T12:03:36.150 回答
2

这是我在 Google 中搜索此错误时的最高结果。

虽然这个问题并没有问如何解决与React Native相关的这个问题,但我想我还是会与任何最终来到这里并正在使用React Native的人分享。

从项目根运行:

  • cd android && ./gradlew clean[Mac - Bash 终端]
  • cd android & gradlew clean[Windows - 命令提示符]

然后react-native run-android再次构建并运行。

于 2016-12-01T04:01:24.360 回答
1

我通过删除一个库在我的项目中解决了这个问题:

原因:我在我的项目中包含了一个库项目,并且错误地没有从我的项目中删除以前的 lib,所以当我运行项目时,当我从 lib 文件夹中删除相同的库时,相同的库 dex 文件生成了两次在我的项目中,错误消失并成功创建了构建,我希望其他人可能会遇到同样的问题。

于 2015-02-25T13:26:09.260 回答
0

我在 /libs 目录中有两个相关但不相同的番石榴库,删除一个后,问题就消失了。

于 2013-03-07T03:01:23.293 回答
0

对我来说,我已经指向了我的builtPath 中的一个 jar 文件,它实际上已经不在那个路径中了!

于 2013-04-03T03:34:16.540 回答
0

我收到与 GooglePlayService 库项目 google-play-services.jar 相同的错误消息。

我们使用 maven,因此我必须在本地 maven 存储库中添加库。(mvn install:install-file -Dfile=xxx)

现在该库在“Java Build Path”-> Libraries 中有两次。

  • 一次在 Android 依赖项中
  • 一次在 Maven 依赖项中。

要解决此问题,我需要从 google-play-services_lib/libs 目录中删除该库(自动使用的 jar)

于 2013-05-16T09:44:08.130 回答
0

我遇到了这个问题并通过更改路径解决了它。jar 用于更改目录,但 . jar拉到另一边,改变路径,我进入没有问题

于 2013-06-13T04:10:40.727 回答
0

我遇到了同样的问题,无法在 android --lorg\xhtml\CSS 中执行 multipledex 文件

我删除了lib文件夹中的2个外部jar文件--core-renderer-3043e0f89ffb2.jar

core-renderer-minimal-e70d6a.jar 和我的项目再次构建良好......

于 2013-08-12T09:21:06.280 回答
0

就我而言,我删除了“src/com/...”目录中的“.apk”文件,清理项目并运行。

我已经尝试了所有以前的建议,但对我不起作用!

于 2013-11-13T11:49:41.403 回答
0

转Dalvik格式失败:无法执行dex:多个dex文件定义Lcom/google/zxing/BarcodeFormat;

为那些收到有关 zxing 的条形码扫描仪插件错误的人发布此答案。

只需删除 libs 文件夹中的 jar 文件即可。应该是 project/libs/com.google.zxing.client.android.captureactivity.jar

于 2014-02-04T03:31:02.257 回答
0

当我导入一个 .jar 文件(事实上它是 httpmime-4.3.jar)并尝试使用它时,我发生了这个错误。对我来说,解决方案很简单:我从 libs 文件夹中删除了 .jar 文件,并将其从 Order and Export 中删除。再次运行项目,它成功了,所以我再次添加了.jar文件,终于可以了。

于 2014-03-21T16:09:49.037 回答
0

问题是“Android 依赖项”即使在以下情况下仍保留对旧 AdMob SDK 的引用:

  • 从构建路径中删除旧的 admob sdk
  • 蚂蚁清洁
  • 日食清洁
  • 手动删除 bin 和 gen 文件夹
  • 关闭/打开日食
  • 更新 sdk 工具
  • 更新广告

解决方案是从您的计算机中实际删除 AdMob SDK JAR ,而不仅仅是从项目中删除。

于 2014-04-04T10:09:56.667 回答
0

检查您的 bin 文件夹是否不在构建路径中。

于 2014-04-15T13:53:32.490 回答
0

\bin\dexedLibs并删除已经删除的库的所有罐子,然后清理

于 2014-10-27T09:37:19.640 回答
0

拆分 Google Play 服务可以帮助您: https ://developers.google.com/android/guides/setup#split

所以不要只添加 play-services :

compile 'com.google.android.gms:play-services:7.5.0'

你只添加你需要的东西:

// Google Maps only
compile 'com.google.android.gms:play-services-maps:7.5.0'
于 2015-07-01T06:24:52.950 回答
0

如果您使用 'com.google.android.gms:play-services' 您可以添加您真正需要的内容,请查看以下列表:

谷歌+ com.google.android.gms:play-services-plus:10.0.1

谷歌账户登录 com.google.android.gms:play-services-auth:10.0.1

Google Actions,基本客户端库 com.google.android.gms:play-services-base:10.0.1

谷歌地址 API com.google.android.gms:play-services-identity:10.0.1

Firebase 应用索引 com.google.firebase:firebase-appindexing:10.0.1 Google Analytics com.google.android.gms:play-services-analytics:10.0.1

谷歌意识 com.google.android.gms:play-services-awareness:10.0.1

谷歌演员 com.google.android.gms:play-services-cast:10.0.1

谷歌云消息 com.google.android.gms:play-services-gcm:10.0.1

谷歌云端硬盘 com.google.android.gms:play-services-drive:10.0.1

谷歌健身 com.google.android.gms:play-services-fitness:10.0.1

谷歌位置和活动识别 com.google.android.gms:play-services-location:10.0.1

谷歌地图 com.google.android.gms:play-services-maps:10.0.1

谷歌移动广告 com.google.android.gms:play-services-ads:10.0.1

谷歌地方 com.google.android.gms:play-services-places:10.0.1

移动视觉 com.google.android.gms:play-services-vision:10.0.1

谷歌附近 com.google.android.gms:play-services-nearby:10.0.1

谷歌全景查看器 com.google.android.gms:play-services-panorama:10.0.1

Google Play 游戏服务 com.google.android.gms:play-services-games:10.0.1

安全网 com.google.android.gms:play-services-safetynet:10.0.1

安卓支付 com.google.android.gms:play-services-wallet:10.0.1

安卓穿戴 com.google.android.gms:play-services-wearable:10.0.1

于 2017-01-06T07:33:33.023 回答
0

从您引用的库中删除生成的 R 包。有时 Clean and Rebuild 不会删除旧的 R 生成文件。

于 2018-03-24T23:43:24.843 回答