Android:转换为Dalvik格式失败:无法执行dex:null

33

我试图在Android上使用SmugFig SmugMug API。 我想它是为J2SE设计的,所以我不确定它是否能在Android上工作,但我认为值得尝试,而不是尝试创建自己的API。

然而当我加载项目时,我遇到了以下错误:

Conversion to Dalvik format failed: Unable to execute dex: null

它没有说明失败的包是哪个,只显示“Android Packaging Problem”,但在我将SmugFig及其依赖项JARS添加到构建路径之前,它并没有发生这种情况。

我应该去哪里看?或者这主要意味着它不能与这些库一起使用?


此外,这是一个已知的问题,适用于引用其他对象的Android项目:http://groups.google.com/group/android-developers/browse_thread/thread/3911749addce534d - inazaruk
14个回答

41

我找到一篇博客文章,建议将eclipse.ini中分配的内存增加到以下大小:

-Xms128m -Xmx512m

或者更高,但是这对我没有起作用。

然而,我发现另一篇帖子建议执行“项目 > 清理”,这对我起了作用。 我认为这种情况发生在你没有先关闭模拟器就关闭Eclipse时。 这是一个非常烂的错误。 今天早上花了几个小时来寻找解决方法...grrrrrrr :-(


谢谢你结束了我的痛苦!! - Horia Dragomir
这对我也起作用了!看起来是在我更改eclipse.ini中的内存量后开始出现的,清理项目解决了它。 - Adam
4
谢谢,这对我也有用,但我必须将它增加到-Xms512m -Xmx1024m。 - SpoiledTechie.com
http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F - Tobias
今天早上花了几个小时挖掘解决方案...grrrrrrr :-(),+1。 - S.Thiongane

16

前往项目 » 属性 » Java Build Path » 库,移除除了“Android X.Y”(在我的情况下是Android 1.5)之外的所有内容,点击确定。前往项目 » 清理 » 清理所选项目下方的项目 » 选择你的项目并点击确定。这应该可以解决问题。

你的项目文件夹中可能还有一个JAR文件(我曾将Admob JAR文件复制到src文件夹中),然后将其添加为Java路径库。它不会出现在包资源管理器中,因此你没有注意到它,但它会被计算两次,导致可怕的Dalvik错误1。

另一个可能的原因是包名称冲突。假设你有一个名为com.abc.xyz的包和一个名为A.java的类,位于此包内,并且另一个库项目(已添加到此项目的依赖项中)包含相同的com.abc.xyz.A.java,则会收到完全相同的错误。这意味着你对文件A.java有多个引用,无法正确构建它。


谢谢。当您有重复的依赖项时,可能会出现这些错误。您的解决方案对我很有效。 - Thales Ceolin
我也遇到了关于依赖项的问题。这就是为什么这个解决方案对我有用的原因。 - Ayaz Alifov

6
在Android 2.3发布后,Eclipse DDMS更新至8.0.0后,出现了这个错误。以上建议都无法解决问题,但最终发现问题的根源在于一个被引用的项目(该项目中有一些类同时存在于服务器端和客户端)。 移除该项目的引用并构建一个jar包后,问题便得到了解决。 看起来是DDMS 8.0.0与被引用项目产生了冲突。

我在升级到2.3后,遇到了一个引用项目的相同问题,这是一个讨厌的错误。 - jasonhudgins
我也会尝试创建一个链接,而不是将其作为一个项目引用。 - Ulrich Scheller
3
我们已经推出了adt 8.0.1版本,以解决这个问题。 - Xavier Ducrohet

5
我成功的方法是在“配置构建路径 -> Java构建路径 -> 库”中删除android.jar的引用,但需要保留Android 3.0库的引用。请注意不要删除HTML标签。

4

问题很简单,是由一些JAR文件占用了堆大小造成的...这些文件可以手动删除...

否则,最好的选择是修改eclipse文件夹中的Eclipse.ini文件...

在文件中添加-Xmx1024m以将内存大小设置为1 GB...它一定会起作用...


4
不,这肯定不行。它对我毫无帮助。 - arkon

3

以下是帮助我解决此错误的步骤:

  1. 移除用户库(外部库)。
  2. 清理项目。
  3. 重新添加外部库。
  4. 构建项目。
  5. 运行项目。

希望这对你有所帮助。 谢谢。


2

2
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-XX:MaxPermSize=512m
-vmargs
-Xms512m
-Xmx1024m

对我来说可行 https://groups.google.com/forum/?fromgroups=#!topic/phonegap/yWePvssyiLE


1

请确保您不会在jar和eclipse中引用同一个项目。例如,您在eclipse中有一个名为myproject的项目。您的Android项目引用了myproject项目和从中生成的jar。当您尝试进行dex操作时,这将导致错误,因为它会针对来自myproject和myproject.jar的生成类进行dex操作。


1

只有这个能解决我的问题。项目 > 清理


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接