Konvertierung in das Dalvik-Format fehlgeschlagen: Dex: Java-Heapspeicher kann nicht ausgeführt werden


79

Ich habe meinem Android-Eclipse-Projekt eine 2,45-MB- JAR-Datei hinzugefügt und erhalte jetzt weiterhin die Meldung "Konvertierung in das Dalvik-Format fehlgeschlagen: Dex: Java-Heapspeicher kann nicht ausgeführt werden", unabhängig davon, was ich tue.

Ich habe online recherchiert und wurde informiert, meine eclipse.ini zu aktualisieren, um meine Java VM-Heap-Größen zu erhöhen. Ich habe dies für alle Werte in eclipse.ini getan und erhalte weiterhin den Build-Fehler.

Irgendwelche Ideen?


Können Sie bitte die Zeilen posten, die Sie zu Eclipse hinzugefügt haben?
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

Ich habe auch nur die Einträge -data @noDefault in meinem Init: Ich habe versucht, verschiedene Codes hinzuzufügen, einschließlich -Xms512m -Xmx512m und -vmargs -Xms512m -Xmx512m in verschiedenen Permutationen mit diesen beiden Zeilen. Außerdem gibt es Vorschläge zum Hinzufügen von etwa 20 weiteren Codezeilen, die ich ebenfalls ausprobiert habe. Jemand muss die KOMPLETTEN Codezeilen, die in der exclipse.ini benötigt werden, von oben nach unten veröffentlichen und angeben, ob Dateipfade im hinzugefügten Code angepasst werden müssen, was für verschiedene Konfigurationen unterschiedlich sein wird
Androidcoder

Ich habe auch versucht, von der Kommandozeile mit Eclipse -vmargs -Xms512m -Xmx512m zu starten, was nicht funktioniert hat
Androidcoder

Antworten:


209

Ändern Sie das -XmsAmund -XmxBmparemeters in eclipse.iniso dass sie groß genug sind. Der Standardwert ist -Xms40m -Xmx384m. Versuchen Sie, beide zu ändern -Xms512m -Xmx512mund Eclipse neu zu starten, um festzustellen, ob dies hilfreich ist. Wenn nicht, erhöhen Sie die Werte weiter und starten Sie Eclipse neu, bis eines von zwei Dingen eintritt:

  1. Ihr Build ist abgeschlossen.
  2. Eclipse wird nicht neu gestartet, da Sie nicht über genügend Speicher verfügen.

eclipse.inibefindet sich /etc/eclipse.iniin Ubuntu (vorausgesetzt, Sie haben Eclipse aus den Ubuntu-Repositorys installiert).

Für MAC siehe:

Eclipse.ini zu finden ist ein bisschen schwierig. Um es zu finden, klicken Sie mit der rechten Maustaste auf das Eclipse-Anwendungssymbol und wählen Sie "Paketinhalt anzeigen". Doppelklicken Sie dann auf den Ordner "Inhalt" und doppelklicken Sie dann auf den Ordner "MacOS", der Startseite von eclipse.ini

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


8
Diese Seite beschreibt, wie Sie eclipse.ini auf einem Mac finden.
Johnny Lambada

7
In Windows befindet es sich direkt daneben eclipse.exe, wo immer Sie es platzieren.
Cheezmeister

1
Die einzigen Einträge, die ich habe, sind -data @noDefault Bitte raten Sie
Roy Hinkley

@JohnnyLambada Hallo Johny, ich habe eine 7-MB-JAR-Datei hinzugefügt und die Variable xms auf 1024 m geändert. Aber jetzt bekomme ich diesen Fehler Die Konvertierung in das Dalvik-Format ist mit Fehler 1 fehlgeschlagen
Gaurav Arora

1
Das Flag Xmx gibt den maximalen Speicherzuweisungspool für eine Java Virtual Machine (JVM) an, während Xms den anfänglichen Speicherzuweisungspool gemäß dieser SO-Antwort
Johnny Lambada

20

Manchmal verursacht das Überprüfen der JAR-Bibliothek in den Projekteigenschaften auch dieses Problem. Versuchen Sie in diesem Fall Folgendes:

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.

Dabei nimmt Eclipse nur die Klassen, die im Code benötigt werden, aus dem JAR, anstatt alle Klassen aus dem JAR zu speichern.


5
Wenn Sie die Bibliothek von "Bestellen und Exportieren" deaktivieren, wird "ClassNotFoundException" ausgelöst, wenn über den Code auf eine Klasse aus dieser Bibliothek zugegriffen wird. Die Bibliothek (en) sollten exportiert werden.
Vaishak Nair

Ja, das ist richtig, ich erhalte den Java-Heap-Fehler. Wenn ich die gesamte Bibliothek deaktiviert habe, wird sie ausgeführt, aber die Anwendung stürzt auf dem Gerät ab. Bitte helfen Sie mir.
AK Joshi

0

Alle oben genannten Antworten sind perfekt, aber Sie können noch eines ausprobieren. Das ist schnell und einfach. Schließen Sie alle unnötigen offenen Projekte im Eclipse-Arbeitsbereich und starten Sie Eclipse neu.

Sie können auch die Parameter -XmsAm und -XmxBm in eclipse.ini erhöhen.


Ich habe das gleiche Problem, ich habe auch versucht, Speichergröße zu ändern. Aber Problem nicht gelöst. Schließlich habe ich Projekt-Explorer -> Rechtsklick -> Maven -> Projekt aktualisieren. Mein Problem ist behoben. Sobald ich die letzte Kasse genommen habe, sollte ich das Maven-Update durchführen. Aber ich habe mich geirrt.
So

@ Ravi wie lösst du den Fehler, lass es mich auch wissen.
Sandeep Londhe

0

Gehen Sie zu Ihren Projekteigenschaften und entfernen Sie Ihre hinzugefügten Bibliotheken aus dem Java Build Path. Klicken Sie auf OK und fügen Sie sie erneut hinzu. Ich war auch mit diesem Problem konfrontiert. Dadurch habe ich dieses Problem gelöst.


Dies funktionierte wirklich für mich mit Eclipse ADT @AndroidHacker
noman404

-1

Wichtiger Zusatz:

Die Lösung funktionierte unter Windows nicht (wahrscheinlich Probleme mit der Speicherzuweisung), aber unter Linux auf demselben Computer. Die Installation eines anderen Betriebssystems würde Ihnen oder der Neuinstallation von Windows helfen.


Gerade neu installiert Mein Betriebssystem .. hat nicht funktioniert. Ersetzte auch mein Motherboard für alle Fälle und kaufte eine neue Festplatte, die auch nicht funktionierte.
Kapitein Witbaard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.