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

时间:2010-04-22 01:56:24

标签: java android eclipse dalvik

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

当我加载项目时,我收到以下错误:

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

它没有说明它失败了什么软件包,只是“Android打包问题”,但是在我添加SmugFig并将它依赖JARS添加到构建路径之前它没有这样做。

我应该在哪里看?或者这主要是因为它不适用于那些库?

14 个答案:

答案 0 :(得分:41)

我找到了一个博客文章,说明将eclipse.ini中分配的内存增加到: -Xms128m -Xmx512m 或更高的东西,但这不适合我。

但是,我发现了另一篇建议做项目的帖子>清洁并为我修复它。 我认为当你关闭Eclipse而没有先关闭模拟器时会发生这种情况。相当蹩脚的bug。今天早上花了几个小时去寻找解决方案... grrrrrrr: - (

答案 1 :(得分:16)

转到项目»属性»Java构建路径»库并删除除“Android X.Y”之外的所有内容(在我的案例中为Android 1.5)。单击确定。转到项目»清洁»清除下面选择的项目»选择项目,然后单击确定。这应该有用。

您的项目文件夹中也可能有一个JAR文件(我已将Admob JAR文件复制到我的src文件夹中),然后将其添加为Java Path Library。它没有显示在Package Explorer下,因此您没有注意到它,但它会被计算两次,导致可怕的Dalvik错误1。

另一个可能的原因可能是包名冲突。假设你在这个包中有一个包com.abc.xyz和一个名为A.java的类,以及另一个包含相同com.abc.xyz.A.java的库项目(添加到该项目的依赖项中),那么你将得到完全相同的错误。这意味着,您有多个对同一文件A.java的引用,无法正确构建它。

答案 2 :(得分:6)

Eclipse DDMS更新8.0.0附带Android 2.3发布后,突然出现了这个错误。

以上建议都没有帮助,但事实证明问题的根源是引用项目(服务器端和客户端之间共享的几个类)。

一旦我删除了项目参考并构建并包含了曾经引用过的项目的jar,问题就不复存在了。

似乎DDMS 8.0.0中的某些东西在引用项目中变得流氓。

答案 3 :(得分:5)

对我有用的是删除

中的android.jar引用

配置构建路径 - > Java构建路径 - >图书馆

保留Android 3.0库参考。

答案 4 :(得分:4)

这仅仅是因为某些JAR文件占用的堆大小...可以手动删除......

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

将-Xmx1024m添加到文件中以使内存大小达到1 GB ......它肯定会工作.....

答案 5 :(得分:3)

帮助我删除此错误的步骤

  1. 删除用户库(外部库)。
  2. 清理项目
  3. 再次添加外部库
  4. 构建项目
  5. 运行项目。
  6. 希望这会对你有所帮助。 感谢。

答案 6 :(得分:2)

http://groups.google.com/group/android-developers/browse_thread/thread/3911749addce534d

他们正在努力推动修复2.3

编辑:这已修复为2.3,请通过eclipse获取更新。

答案 7 :(得分: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

答案 8 :(得分:1)

确保你没有在jar和eclipse中引用同一个项目。例如,你在eclipse中有一个名为myproject的项目。你的android项目引用了myproject项目和从它生成的jar。当你尝试dex时,这将导致错误,因为它试图对myproject和myproject.jar中生成的类进行dex

答案 9 :(得分:1)

只有这样才能解决我的问题.Project>清洁

答案 10 :(得分:0)

Here他们认为这些错误是由巨大的.java文件引起的。

我遇到了同样的问题,增加分配的内存对我有用。

答案 11 :(得分:0)

我帮助删除/home/user/.android文件夹。 操作系统:Debian Wheezy 32位

答案 12 :(得分:0)

绝对没有任何前面提到的“修复”对我有用,这并不奇怪,因为他们甚至没有解决问题。

虫子本身源于与Proguard的冲突。以下是错误报告:http://code.google.com/p/android/issues/detail?id=18359要解决此问题,您只需手动更新Proguard:http://sourceforge.net/projects/proguard/files/latest/download?source=files

答案 13 :(得分:0)

对于使用New Relic

的项目

通过Project r'click下的“Update New Relic”更新New Relic - > Update New Relic。这对我有用。