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

时间:2011-10-24 00:14:19

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

自更新到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
  • 清理项目并重建 - 禁用“Project-> Build Automatically”选项,然后选择“Clean”和“Build”项目,然后尝试运行。将“自动构建”选项重置为“开启”
  • 重新安装Android开发人员工具
  • 重新安装Eclipse(更新到最新版本3.7.1)
  • 创建了从文件系统导入的新项目
  • 从subversion创建了一个新项目。

54 个答案:

答案 0 :(得分:461)

我遇到了同样的问题,非常奇怪,因为它只在使用Eclipse时才会发生(但是对于Ant来说还可以)。 这就是我修复它的方法:

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

  • 取消选中您的.jar资料库

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

答案 1 :(得分:94)

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

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

答案 2 :(得分:49)

[为我解决]

Eclipse项目属性 - > Java构建路径 - >订单和导出

取消选中Android私有库。

答案 3 :(得分:47)

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

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

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

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

Voilla!

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

答案 4 :(得分:36)

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

答案 5 :(得分:31)

  1. 关闭日食。
  2. 删除项目文件夹中的bin文件夹。
  3. 启动eclipse并清理你的项目。
  4. 现在运行,问题应该消失了

答案 6 :(得分:26)

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

对我来说,这发生在我将android-support-v4.jar添加到我的libs /文件夹时,并且不知何故eclipse在bin / classes / android-support-v4.jar中添加了第二个副本。

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

您可以使用

进行测试
  

grep -r YourOffendingClassName YourApp | grep jar

答案 7 :(得分:23)

对我来说,我只需点击项目 - >构建路径 - >配置构建路径 - >图书馆 - >删除依赖

运作后。

答案 8 :(得分:20)

如果您有两个包含相同类名的jar,例如,可能会发生此错误。我有两个库:jsr311-api-1.1.1.jar和jersey-core-1.17.1.jar,两者都包含类javax.ws.rs.ApplicationPath。我删除了jsr311-api-1.1.1.jar并且工作正常。

答案 9 :(得分:19)

facebooksdk.jar 添加到已经依赖 android-support-v4.jar 的项目后,我收到此错误。由于 facebooksdk.jar 已经包含了自己的 android-support-v4.jar ,因此存在冲突。从项目属性/ Java构建路径/库中删除早期的 android-support-v4.jar 解决了我的问题。

答案 10 :(得分:18)

转到项目/属性和Java 构建路径取消选中 Android私有库

This is also another case for this kind of error

完成

答案 11 :(得分:15)

我从构建路径中删除了Android依赖项,但它确实有效。

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

答案 12 :(得分:9)

您可能installed r14,此错误可能是由于平台工具更新造成的,您必须重新安装您的sdk

答案 13 :(得分:9)

对我来说,只有在我的项目中涉及Android库项目时,此问题才存在。因此,当我删除所有库并按照您所说的那样我可以再次运行我的应用程序。 如果涉及到库,那么即使是bin-removal-trick技巧也会起作用。

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

答案 14 :(得分:8)

Project Explorer 中选择项目,右键单击并选择属性 - > Java构建路径 - > 来源 - >选中允许源文件夹的输出文件夹

的复选框

答案 15 :(得分:8)

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

答案 16 :(得分:8)

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

答案 17 :(得分:7)

我参加这个派对的时间已经很晚了,但是添加了我自己的经验,以后我可以再次找到它。)

升级android sdk和eclipse ad-ins后我遇到了这个问题。没有升级逍遥法外!

我的问题与图书馆项目有关,我的应用程序引用了标准的java项目和android库项目。我注意到Java Build Path设置包括在源列表中的android库项目src和res文件夹(对于在源代码中提到bin的每个人都赞成,src和res也是一个问题。)

所以解决方案是:

  1. 从源列表和项目列表中的设置的Java Build Path部分删除所有引用的Android库源和项目引用
  2. 确保项目列表中列出纯Java依赖项,并在“订单和导出”选项卡中选中,以便类包含在apk中
  3. 确保所有Android库依赖项都列在项目属性的Android部分,在已检查的SDK版本下方的库部分中。
  4. 从其他解决方案中将所有这些拼凑起来!呼!

答案 18 :(得分:6)

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

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

答案 20 :(得分:6)

当我从adt 14升级到15并且让它工作时我遇到了这个问题我最后只是删除了.eclipse文件夹(以及我的设置)并重新安装了adt 15.

答案 21 :(得分:6)

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

-Xmx1024m

然后重新启动计算机。

它对我有用。

答案 22 :(得分:6)

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

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

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

编辑2 所以关闭的Eclipse将文件移回原来的位置,它的全部工作......嗯什么? 我不假装知道为什么会这样。如果有任何更改,将更新。

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

所以的答案是:两个地方都没有文件。至少对我来说这是有用的。

答案 23 :(得分:5)

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

答案 24 :(得分:5)

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

答案 25 :(得分:5)

我的解决方案:

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

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

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

    dev1:eclipse $ ./eclipse clear

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

  5. 我收到的确切错误: [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 :(得分:4)

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

答案 27 :(得分:4)

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

答案 28 :(得分:4)

[为我解决]

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

答案 29 :(得分:4)

在没有运气的情况下尝试了所有其他建议后,我删除了项目'bin'目录中的所有内容,然后再次运行eclipse并且它有效。

答案 30 :(得分:3)

确保 Java Build Path

下的订单和导出标签中的“strong-support-v4.jar”取消选中
>

按照以下步骤操作:

  1. 项目属性
  2. Java构建路径
  3. 订购和出口
  4. 取消选中“android-support-v4.jar”

答案 31 :(得分:3)

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

答案 32 :(得分:3)

我曾尝试过上述大部分解决方案,过去其中一些解决了问题。

但这次没有一个工作,所以我删除了我的图书馆项目的.jar文件。并重建库和应用程序项目。

这次它有效!

答案 33 :(得分:3)

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

答案 34 :(得分:3)

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

答案 35 :(得分:2)

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

虽然问题并没有问及如何解决 React Native 这个问题,但我想我会分享任何最终到此为止的人正在使用 React Native

从项目根运行:

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

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

答案 36 :(得分:2)

上面的方法没有为我工作,但是我的工作就像一个魅力!

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

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

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

第3步:清理并重建

DONE!

答案 37 :(得分:2)

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

答案 38 :(得分:2)

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

我已将其从我的应用中删除its work fine now

答案 39 :(得分:1)

我在项目中通过删除库来解决此问题:

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

答案 40 :(得分:0)

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

所以不要只添加播放服务:

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

您只需添加所需内容:

// Google Maps only
compile 'com.google.android.gms:play-services-maps:7.5.0'

答案 41 :(得分:0)

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

Google+的 com.google.android.gms:play-services-plus:10.0.1

Google帐户登录 com.google.android.gms:play-services-auth:10.0.1

Google Actions,Base Client Library com.google.android.gms:play-services-base:10.0.1

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

Firebase应用程序索引 com.google.firebase:firebase-appindexing:10.0.1 谷歌分析 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

Google Cloud Messaging com.google.android.gms:play-services-gcm:10.0.1

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

Google Fit com.google.android.gms:play-services-fitness:10.0.1

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

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

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

Google地方信息 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

Google Panorama Viewer 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

Android Pay com.google.android.gms:play-services-wallet:10.0.1

Android Wear com.google.android.gms:play-services-wearable:10.0.1

答案 42 :(得分:0)

转到\bin\dexedLibs并删除已删除的库中的所有 jars ,然后清理

答案 43 :(得分:0)

从引用的库中删除生成的R包。有时,清理和重建不会删除旧的R生成文件。

答案 44 :(得分:0)

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

答案 45 :(得分:0)

问题在于" Android Dependencies"即使在以下情况之后仍然保留对旧AdMob SDK的引用:

  • 从构建路径中删除旧的admob sdk
  • ant clean
  • eclipse clean
  • 手动删除bin和gen文件夹
  • close / open eclipse
  • 更新sdk工具
  • 更新adt

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

答案 46 :(得分:0)

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

答案 47 :(得分:0)

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

针对zxing的条码扫描程序插件收到此错误的人发布此答案。

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

答案 48 :(得分:0)

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

我曾尝试过所有以前的建议而对我不起作用!

答案 49 :(得分:0)

我有同样的问题 无法在android --lorg \ xhtml \ CSS

中执行multipledex文件

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

core-renderer-minimal-e70d6a.jar,我的项目再次建好......

答案 50 :(得分:0)

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

答案 51 :(得分:0)

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

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

现在,库在“Java构建路径”中是两次 - >库。

  • 曾在Android Dependencies
  • 和Maven Dependencies中的一次。

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

答案 52 :(得分:0)

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

答案 53 :(得分:0)

我在/ libs目录中有两个相关但不完全相同的guava库,在我删除之后,问题就消失了。