无法执行dex:多个dex文件定义

时间:2011-11-09 02:33:13

标签: java android

我知道这个问题曾经在这里问过几次。但我还没有看到任何可能的解决方案。 在我将项目“作为Android应用程序运行”之前,如果我不清理它,我会收到以下错误并且必须重新启动Eclipse ...并再次清理。

Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define
     Lcom/jstun/core/attribute/MessageAttributeInterface;

com.jstun.core ...是我的src文件夹的一部分,当然我无法将其删除。即使我删除了该包,另一个包将显示为错误,如:

Unable to execute dex: Multiple dex files define
     Landroid/support/v4/app/ActivityCompatHoneycomb;

自从更新到ADT 15后我看到了这个错误,我在Ubuntu上使用Eclipse Galileo 你有什么主意吗?谢谢你的回复!

31 个答案:

答案 0 :(得分:136)

这是构建路径问题。

  • 确保您的bin文件夹未包含在构建路径中。

  • 右键点击您的项目 - >去属性 - >构建路径。

  • 确保Honeycomb库位于您的libs/文件夹中,而不在源文件夹中。

  • 在构建路径中将libs/中的库单独包含在内。

    顺便说一下,您可能需要引入android-support-v4库以获得Ice Cream Sandwich支持而不是Honeycomb支持库。

答案 1 :(得分:58)

我今天遇到了类似的错误,原因是我的应用程序项目使用的两个库项目引用了支持库,但是版本不同。

更多细节: 我的应用依赖于2个图书馆项目

  • FaceBookSDK 3.0 - >这是引用android-support-v4
  • ActionBarSherlock - >它引用了android-support-v4,但带有修改版本以支持地图。

要解决这个问题,我必须让FaceBookSDK库直接依赖ABS库而不是支持库。

答案 2 :(得分:47)

对我来说,我删除了名为android support v4.jar的libs文件夹中的文件,一切顺利。古德勒克:)

答案 3 :(得分:33)

我发生了同样的错误,每当我修复它时,它会在我重新启动Eclipse后回来。

首先,正如其他人所说,请确保您的项目周围没有相同.jar文件的多个副本。

就我而言,我有一个使用ActionBarSherlock的主项目(以及其他库项目)。对我有用的诀窍是进入ActionBarSherlock --> Properties --> Java Build path --> Order of Export并取消选择Android Private Libraries。然后进入Project -> Clean,现在你应该能够正确地构建项目了。

现在,出于某种原因,每次重新启动Eclipse时,它都会自动启用该复选框,因此我必须再次重复此过程。

希望这可以帮助一些失去灵魂的人:)

答案 4 :(得分:31)

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

答案 5 :(得分:15)

对我来说,只需转到项目属性>> Java构建路径>>订单和出口。取消选中所有外部库,如下图所示。它对我有用。希望这有帮助。

Project Properties

答案 6 :(得分:8)

我在项目中也遇到过这个问题。 AVD无法重新加载资产,lib,res等文件夹上下文。 问题: Dex Loader]无法执行dex:多个dex文件定义Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl

然后,我创建了新项目并复制了MainActivity.javaactivity_main.xml,可绘制的上下文。 然后从包探索中删除旧项目,重新启动Eclipse和AVD。 我的项目现在正常工作.... :) 我希望这些步骤能帮到你们一点点的人...... !!

答案 7 :(得分:8)

我有同样的问题,我尝试的是:

  1. 列表项
  2. 打开项目构建路径
  3. 选择“库”标签,
  4. 删除除Android库以外的所有库
  5. 添加所有必需的JAR文件,
  6. And Done!
  7. 它对我有用,谢谢。

答案 8 :(得分:6)

正如其他人所提到的,当您在构建路径中或设置中的其他位置拥有同一类的多个副本时,就会发生这种情况。

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

您可以使用

进行测试
  

grep -r YourOffendingClassName YourApp | grep jar

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

答案 9 :(得分:6)

如果有些人因为facebook-connent-plugin for phonegap而面临这个问题

尝试删除bin / class / com / facebook / android目录中的文件! - >并重建

答案 10 :(得分:5)

我出于另一个原因得到了这个错误。我错误地添加了v4和v13支持库。这对我来说不是必需的,因为我的minSdkVersion是15。

我通过修复了它,包括v13支持库。另外,请确保在eclipse中检查导出的库构建路径中的库。我也将它移到了顶部。

答案 11 :(得分:4)

即使经过多个答案,也没有任何解决方案适用于我。

我从构建路径中删除了“Android Dependencies”。 将所有jar文件再次添加到构建路径,错误消失了。 不知何故,日食似乎缓存了这些东西。

答案 12 :(得分:3)

我将这个答案留给那些像我一样参与这种情况的人。

我偶然发现,我注意到我错误地将支持库JAR文件拖放到我的src文件夹中,它就在那里。因为我不知道它是怎么发生的,或者当我把它放在那里时,我无法想象那里出了什么问题。

我遇到了同样的错误,我在一段时间后发现了问题并将其删除了。项目现在正常运作。

答案 13 :(得分:3)

我遇到过这个问题并不代表同一个库被多次加载,但System试图同时加载一个具有相同名称和可能相同包名的类,即

    {li> com.pack1.deClass Geometry library1.jar

和另一个

    {li> com.pack1.deClass Geometry library2.jar.

你应该怎样接近? 您应该分析正在使用的方法,library1.jar或library2的方法。

有2个解决方案,

  1. 重命名一个包名,然后dalvik解释它们是不同的类
  2. 或者如果您想冒险,请清除不包含我们真正使用的方法的类。
  3. 我希望这澄清了这个经常被问到的问题。

答案 14 :(得分:3)

对我而言,解决方案就是做以下事情:

  1. - >项目中的lib目录并删除任何多个元素。
  2. 项目 - >属性 - > Java构建路径和删除任何依赖项库都是自动添加的,而不是由您添加的! - >应用
  3. 重启Eclipse IDE
  4. 现在清理项目。
  5. 在设备/模拟器上运行/调试项目... 祝你好运

答案 15 :(得分:2)

我最初的问题是:

  

无法执行dex:java.nio.BufferOverflowException。检查Eclipse日志中的堆栈跟踪。

1)我右键单击我的项目 - > Android工具 - >添加支持库 (运行我的应用程序......没有用,所以我继续......) 2)再次右键单击项目 - > 属性 - > Android - >检查Project Build Target上的Android 4.1.2(16) (再次运行应用程序......并获取此信息:

  

无法执行dex:多个dex文件定义了Landroid / support / v4 / app / BackStackState;

3)所以我去了我项目的“lib”文件夹删除 “old”Android.support.library.jar (运行应用程序并交叉手指......)

¡工作!

希望它有所帮助...感谢别人!

答案 16 :(得分:2)

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

答案 17 :(得分:1)

在我的应用程序项目中,我在Eclipse工作区(在我的情况下是Facebook SDK)中引用了一个库项目,同时将Facebook SDK包含在jar中,这个错误发生在我身上libs文件夹。删除库引用但将jar保留在libs文件夹中会删除错误。

答案 18 :(得分:1)

我有同样的问题。我不得不删除.apk文件,然后才能工作。

答案 19 :(得分:1)

  • 右键点击项目并转到build Path>configuration build path
  • 选择图书馆标签,然后点击support-v4 library,然后点击删除
  • 点击OK

然后清理你的项目并运行它将起作用: - )

答案 20 :(得分:1)

对我来说,我从lib文件夹中删除了android-support-v4.jar,并从构建路径中删除了。

答案 21 :(得分:0)

如果您使用的是cordova,请尝试 cordova clean 命令

答案 22 :(得分:0)

ULTRA简单的解决方案和最好的:

删除右键单击主项目文件夹中的所有内容 - >属性 - >除了Android X.Y之外的Java Build Path(其中X.Y是android中的版本)。清洁和构建。完成!

在此之前确保拥有一个android-support-v4.jar。

答案 23 :(得分:0)

添加无数其他潜在来源......我更新了项目lib文件夹中的所有库,但随后Eclipse“帮助”重新安装了所有原始库。 Eclipse中没有任何对这些库的引用,但外部dex-maker程序只抓取了lib目录中的所有文件,因此获得了几个库.jar文件的两个版本。

git status确定了新文件,git clean -f为我删除了它们(虽然我有时不得不在Windows上等待或重新启动Eclipse,因为它仍然从副本打开文件)。

答案 24 :(得分:0)

对我来说问题是,我之前添加了一个lib项目(autobahn lib),后来又切换到同一个库的Jar文件。虽然我已经删除了对旧库项目的引用,但我收到了这个错误。 按照这里的所有答案,我检查了构建路径等。但我还没有添加这些库来手动构建路径。所以我没有什么可以删除。 终于遇到了这个文件夹。

  

仓/ dexedLibs

我注意到有两个与autobahn Android对应的jar文件对应导致冲突。所以我删除了dexedLibs文件夹中的所有jar文件并重建了项目。这解决了这个问题。

答案 25 :(得分:0)

我在Intellij中遇到了这个问题,这是因为我添加到项目中的ActionBarSherlock库将android-support-v4.jar定义为编译依赖项,这个jar已经包含在我的项目中所以有多个副本/版本DEX在编译时。

解决方法是将此jar的ActionBarSherlock模块依赖项更改为Runtime而不是compile,因为我的项目已经提供了它。

答案 26 :(得分:0)

我也在努力寻找这个问题。在我的情况下发生的事情是将apk复制到电子邮件(拖放) - 错误地将apk粘贴在其中一个软件包的src文件夹中。 从源文件夹中删除apk后,它工作正常。

答案 27 :(得分:0)

将多个库中的同一个库添加到项目中时会发生此问题。如果您还没有多次添加库,请查看您在项目中添加的库的依赖项/私有库,很可能它们已经包含了导致此冲突的库。

答案 28 :(得分:0)

我在eclipse中找到了以下解决方案...希望它适合你:)

Right click on the Project Name

Select Java Build Path, go to the tab Order and Export

Unchecked your .jar library's

答案 29 :(得分:0)

如果有其他人像我刚才那样对这个问题感到头疼:

我的案例涉及一系列图书馆项目。只需在所有库上清理项目就可以修复所有内容

答案 30 :(得分:-16)

修改 eclipse.ini

中的最大内存参数
-Xmx1024m

然后重新启动计算机。

它对我有用:)