首页 文章

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

提问于
浏览
383

自更新到 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"项目,然后尝试运行 . 将"Build Automatically"选项重置为开

  • 重新安装 Android 开发人员工具

  • 重新安装Eclipse(更新到最新版本3.7.1)

  • 创建了从文件系统导入的新项目

  • 从subversion创建了一个新项目 .

30 回答

  • 4

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

    它运作后 .

  • 4

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

  • 23

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

  • 5

    转到 Project/properties 和Java Build Pathunchecked Android Private Libraries .

    This is also another case for this kind of error

    Done

  • 26

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

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

  • 19

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

  • 7

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

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

  • 4

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

  • 6

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

  • 461

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

  • 31

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

    • 右键单击 Project Name

    • 选择 Build Path - > Configure Build Path

    • Java Build Path 中,转到选项卡 Order and Export

    • 取消选中 .jar

    Only sometimes: 在“订购和导出”选项卡中,我没有任何jar库,因此我取消选中了Android私有库项目 . 现在我的项目正在运行 .

  • 8

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

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

  • 8

    [解决了我]

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

    取消选中Android私有库 .

  • 47

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

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

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

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

    Voilla!

    The exact error I was receiving: 无法执行dex:多个dex文件定义了Landroid / support / v4 / view / PagerAdapter;转换为Dalvik格式失败:无法执行dex:多个dex文件定义Landroid / support / v4 / view / PagerAdapter;

  • 6

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

  • 15
    • 关闭日蚀 .

    • 删除项目文件夹中的bin文件夹 .

    • 启动eclipse并清理你的项目 .

    • 现在运行,问题应该消失了

  • 36

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

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

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

    你可以测试一下

    grep -r YourOffendingClassName YourApp | grep jar

  • 20

    我参加这个派对已经迟到了,但是加入了我自己的经验,所以我可以在以后再找到它:)

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

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

    所以解决方案是:

    • 从源列表和项目列表中的设置的Java Build Path部分中删除所有引用的Android库源和项目引用

    • 确保项目列表中列出了纯Java依赖项,并在“订单和导出”选项卡中选中,以便类包含在apk中

    • 确保所有Android库依赖项都列在项目属性的Android部分,在已检查的SDK版本下方的库部分中 .

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

  • 6

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

  • 8

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

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

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

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

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

    所以 the answer is: don't have files in both locations. 至少对我来说这是有效的 .

  • 49

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

    -Xmx1024m
    

    然后重新启动计算机 .

    它对我有用 .

  • 18

    我相信找到了解决方案?

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

  • 9

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

  • 94

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

  • 9

    我的解决方案:

    • 备份您的代码!

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

    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] Unable to execute dex: Multiple dex files define Landroid/support/v4/view/PagerAdapter; [2012-02-07 14:15:53 - ProjectCloud] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v4/view/PagerAdapter;

  • 5

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

  • 6

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

  • 4

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

  • 6

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

  • 5

    [解决了我]

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

相关问题