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

ter*_*rry 388 eclipse android adt dex android-sdk-tools

由于更新到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;
Run Code Online (Sandbox Code Playgroud)

有类似的问题已经报道,我已经尝试过那里的建议,包括

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

小智 462

我遇到了同样的问题,非常奇怪,因为只有在使用Eclipse时才会发生这种情况(但是Ant可以使用).这就是我修复它的方法:

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

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

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

  • 在Order and Export选项卡中,我没有任何jar库,所以我取消选中`Android Private Libraries`项.现在我的项目正在运行. (44认同)
  • 在最后一次构建和启动之间的某个时间,我的项目中出现了一个新的库:​​"Android Private Libraries",其中包含我已经引用的支持库.所以这个神秘的"多个dex文件定义____"出现了.检查Java Build Path并查看这个新项目,并取消选中最初包含的支持库解决了我的问题. (20认同)
  • 非常感谢.这是正确的解决方案.我真的不知道为什么eclipse有这么多错误.现在的情况就像我只需要2个小时就可以编码,6个小时我就必须找到解决这类不必要问题的方法. (9认同)

ter*_*rry 94

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

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

  • 什么哎谷歌.即使使用R15,这个问题仍然存在. (42认同)
  • 简而言之,没有人真正知道*为什么*问题发生,*它意味着什么*以及*如何*修复它(我在Java Build Path中没有任何bin目录).由于这些原因,我避免更新到R15,留在R9.但我仍然有[类似的问题](http://stackoverflow.com/questions/8721498/multiple-dex-files-define-lcom-android-vending-billing-imarketbillingservice),没有任何线索.任何提示或帮助将不胜感激. (7认同)
  • @BillTheApe - 同意了.这令人沮丧,但成本很高. (6认同)
  • 我编辑了上面的解决方案,包括最终解决方案.现在已永久解决. (2认同)

use*_*467 50

[解决了我]

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

取消选中Android私有库.

  • 在我的情况下没有帮助 (4认同)

小智 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;


Tom*_*eck 36

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

  • 当libs文件夹中有一个旧的jar文件并将其链接到同一工作区中的较新jar时,我遇到了类似的问题.当ADT为同一个符号找到多个定义时,会发出如下错误.删除libs文件夹中的旧jar文件为我修复了它. (2认同)

Moh*_*wal 31

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


cha*_*qke 26

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

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

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

你可以测试一下

grep -r YourOffendingClassName YourApp | grep jar


son*_*ida 23

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

它运作后.


Mat*_*ari 20

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


pon*_*ura 19

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


Hir*_*tel 18

转到项目/属性和Java 构建路径,并选中Android的私人图书馆.

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

完成


Had*_*Tok 15

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

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

  • 从构建路径中删除Android依赖项破坏了我的项目.幸运的是,右键单击项目> Android工具>修复项目属性可以轻松恢复. (2认同)

Ren*_*eno 9

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


小智 9

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

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


Rud*_*zer 8

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


小智 8

Project Explorer中选择项目,右键单击并选择Properties - > Java Build Path - > Source - >选中允许输出文件夹作为源文件夹的复选框


Ahs*_*eer 8

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


Jay*_*Jay 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版本下面的库部分中.

从其他解决方案中将所有这些组合在一起!唷!


Jak*_*164 6

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


Hos*_*Bus 6

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

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

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

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

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

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


Tru*_*los 6

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

-Xmx1024m
Run Code Online (Sandbox Code Playgroud)

然后重新启动计算机.

它对我有用.


jp0*_*121 6

我相信找到了解决方案?

    [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;
Run Code Online (Sandbox Code Playgroud)

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


Ded*_*ted 6

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


小智 5

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


Coo*_*ter 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;


Jar*_*ler 5

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