转换为 Dalvik 格式失败:无法执行 dex:Java 堆空间

Posted

技术标签:

【中文标题】转换为 Dalvik 格式失败:无法执行 dex:Java 堆空间【英文标题】:Conversion to Dalvik format failed: Unable to execute dex: Java heap space 【发布时间】: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 从命令行启动,但没有成功 【参考方案1】:

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

    您的构建完成。 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。

【讨论】:

刚刚重新安装了我的操作系统.. 没用。还换了主板以防万一,买了个新硬盘,还是不行。

以上是关于转换为 Dalvik 格式失败:无法执行 dex:Java 堆空间的主要内容,如果未能解决你的问题,请参考以下文章

由于“转换为 dalvik 格式失败并出现错误 1”,PhoneGap 条码扫描器插件无法导出

错误:在 Google+ 集成期间转换为 Dalvik 格式失败,错误 1

外部 JAR 上的“转换为 Dalvik 格式失败,错误 1”

Android系统执行Java jar程序 -- dalvik运行dex Java工程

使用 libgdx 应用在 Eclipse 中启用 multidex

APP逆向常识