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

80

我把一个大小为2.45mb的jar文件添加到了我的Android eclipse项目中,无论我怎么做,我仍然会收到“转换为Dalvik格式失败:无法执行dex:Java堆空间”。

我在网上进行了研究,并被告知更新我的eclipse.ini以增加Java虚拟机堆大小。我已经为eclipse.ini中的所有值做了这样的更改,但我仍然无法解决构建错误。

有什么想法吗?


请问您能否发布您在Eclipse中添加的代码行? - CRM
-startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar--launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810-product 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 - AndroidPlaya
我在我的init中也只有条目-data @noDefault: 尝试过添加不同的代码,包括-Xms512m -Xmx512m和-vmargs -Xms512m -Xmx512m,在这两行的各种排列组合中。还有一些建议添加大约20行代码,我也尝试过。需要有人发布完整的代码行,从上到下,以及是否需要自定义添加代码中的任何文件路径,这将因不同的配置而异。 - Androidcoder
我也尝试过使用带有参数的命令行从Eclipse启动(如 -vmargs -Xms512m -Xmx512m),但没有成功。 - Androidcoder
5个回答

209

修改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应用程序图标,然后选择“显示包内容”,然后双击“Contents”文件夹,再双击“MacOS”文件夹,即可找到eclipse.ini的位置。

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


8
这个页面描述了如何在Mac上找到eclipse.ini文件。 - JohnnyLambada
7
在Windows中,无论你把它放在哪里,它都会与 eclipse.exe 放在一起。 - Cheezmeister
1
我所拥有的唯一条目是 -数据 @noDefault请给予建议。 - Roy Hinkley
1
标志Xmx指定Java虚拟机(JVM)的最大内存分配池,而Xms则根据此SO答案指定初始内存分配池。 - JohnnyLambada
@Cheezmeister 这个回答完全没有用,它没有解决我的问题。 - Sandeep Londhe
显示剩余3条评论

20
有时在项目属性中勾选.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文件中的所有类。


5
当从代码中访问该库的类时,将该库从“顺序和导出”中取消勾选会导致引发“ClassNotFoundException”。 应该将库导出。 - Vaishak Nair
是的,没错,当我取消所有库的勾选时,我遇到了Java堆错误,虽然程序可以执行,但在设备上却崩溃了,请帮帮我。 - AK Joshi

0

以上所有答案都是完美的,但你可以尝试另一种快速简便的方法,关闭Eclipse工作区中所有不必要的打开项目,然后重新启动Eclipse。

你也可以增加eclipse.ini文件中的-XmsAm和-XmxBm参数。


我遇到了相同的问题,我也尝试了,改变了内存大小。但问题没有解决。最后,我做了以下操作:Project Explorer -> 右键单击 -> Maven -> 更新项目。我的问题得到了解决。一旦我获取了最新的检出,我应该进行Maven更新。但我犯了错误。 - Sun
@Ravi,你是如何解决这个错误的?也请告诉我一下。 - Sandeep Londhe

0

进入项目属性,从Java Build Path中删除您添加的库,然后点击确定, 然后再重新添加它们。我也遇到了这个问题。通过这样做,我解决了这个问题。


这对我在Eclipse ADT @AndroidHacker上真的很有效。 - noman404

-1

重要补充:

这个解决方案在我的Windows上没有起作用(可能是内存分配问题),但在同一台机器上的Linux上表现良好。因此,安装另一个操作系统或重新安装Windows可能会有所帮助。


刚刚重新安装了操作系统,但是还是不行。为了确保问题不出在主板上,我还更换了主板,并购买了一块新的硬盘,但仍然无法解决问题。 - Kapitein Witbaard

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