【问题标题】:Conversion to Dalvik format failed: Unable to execute dex: Java heap space转换为 Dalvik 格式失败:无法执行 dex:Java 堆空间
【发布时间】:2011-08-22 01:42:19
【问题描述】:

我已将 2.45mb jar 文件添加到我的 Android eclipse 项目中,现在无论我做什么,我都会继续收到“Conversion to Dalvik format failed: Unable to execute dex: Java heap space” .

我在网上进行了研究,并被告知更新我的 eclipse.ini 以增加我的 Java VM 堆大小。我已对 eclipse.ini 中的所有值执行此操作,但我继续收到构建错误。

有什么想法吗?

【问题讨论】:

  • 你能把你添加到eclipse中的行贴出来吗?
  • -启动插件/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810 -产品 org.eclipse.epp.package.java.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 512M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 512m --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion= 1.5 -Xms512m -Xmx512m
  • 我的初始化中也只有条目 -data @noDefault:我尝试使用这两行以各种排列方式添加各种代码,包括 -Xms512m -Xmx512m 和 -vmargs -Xms512m -Xmx512m。还有一些我也尝试过添加大约 20 行代码的建议。有人需要把exclipse.ini中需要的COMPLETE行代码,从上到下贴出来,添加的代码中是否需要自定义文件路径,不同配置会有所不同
  • 我也尝试过使用 eclipse -vmargs -Xms512m -Xmx512m 从命令行启动,但没有成功

标签: java android eclipse


【解决方案1】:

修改eclipse.ini 中的-XmsAm-XmxBm 参数,使它们足够大。默认为-Xms40m-Xmx384m。尝试将它们都更改为 -Xms512m -Xmx512m 并重新启动 Eclipse 以查看是否有帮助。如果没有,继续增加值并重新启动 eclipse,直到发生以下两种情况之一:

  1. 您的构建完成。
  2. Eclipse 不会重新启动,因为您没有足够的内存。

eclipse.ini 在 Ubuntu 中位于 /etc/eclipse.ini(假设您从 Ubuntu 存储库安装了 Eclipse)。

MAC请看:

查找 eclipse.ini 有点棘手。要找到它,右键单击 Eclipse 应用程序图标并选择“显示包内容”,然后双击“内容”文件夹,然后双击 eclipse.ini 的主目录“MacOS”文件夹

https://confluence.sakaiproject.org/pages/viewpage.action?pageId=61341742

【讨论】:

  • This page 描述了如何在 mac 上找到 eclipse.ini。
  • 在 Windows 中,它位于 eclipse.exe 旁边,无论您放在哪里。
  • 我仅有的条目是 -data @noDefault 请告知
  • @JohnnyLambada 嗨,Johny,我添加了 7mb jar 文件并将 xms 变量都修改为 1024m。但现在我收到此错误 Conversion to Dalvik format failed with error 1
  • 标志Xmx指定Java虚拟机(JVM)的最大内存分配池,而Xms是根据this SO answer.指定初始内存分配池
【解决方案2】:

有时检查项目属性中的 .jar 库也会导致此问题。在这种情况下,请尝试以下操作:

Right click your project. 
Go to Properties -> Java Build Path -> Order and Export.
Uncheck the check box against your included library. 
Press OK and run the project.

在执行此操作时,Eclipse 将只从 jar 中获取代码中需要的类,而不是存储 jar 中的所有类。

【讨论】:

  • 从“订购和导出”中取消选中库会导致从代码访问该库中的类时引发“ClassNotFoundException”。应该导出库。
  • 是的,没错,我收到 Java 堆错误,当我取消选中所有库时,它会执行但应用程序在设备上崩溃,请帮助我..
【解决方案3】:

以上所有答案都是完美的,但是您可以再尝试一件事,它既快速又简单, 关闭 Eclipse 工作区中所有不必要的打开项目,然后重新启动 Eclipse。

您还可以在 eclipse.ini 中增加 -XmsAm 和 -XmxBm 参数。

【讨论】:

  • 我遇到了同样的问题,我也试过了,内存大小发生了变化。但问题没有解决。最后,我做到了,项目资源管理器 -> 右键单击​​ -> Maven -> 更新项目。我的问题解决了。一旦我进行了最新的结帐,我应该进行 Maven 更新。但我做错了。
  • @Ravi 你如何解决这个错误,也请告诉我。
【解决方案4】:

转到您的项目属性并从 Java 构建路径中删除您添加的库点击确定, 然后再次重新添加它们。我也遇到了这个问题。通过这样做,我解决了这个问题。

【讨论】:

  • 这对我来说确实适用于 eclipse ADT @AndroidHacker
【解决方案5】:

重要补充:

该解决方案在我的 Windows 上不起作用(可能是内存分配问题),但在同一台机器上的 Linux 上运行良好。因此,安装其他操作系统将帮助您或重新安装 Windows。

【讨论】:

  • 刚刚重新安装了我的操作系统.. 没用。还换了主板以防万一,买了个新硬盘,还是不行。
猜你喜欢
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多