Eclipse: java.lang.NoClassDefFoundError für JDK-Klassen in einem Android-Projekt

Zunächst möchte ich erwähnen, dass ich gelesen habeviele stackoverflow posts aboutNoClassDefFoundErrorund ich lese auch darüber inviele andere Blogs und Websites, aber die angebotenen Lösungen haben das nicht behoben.

ich renne64-Bit-Eclipse mit der ADT-Plugin-Version v21.0.1-543035 aufUbuntu 12.10 64-Bit. Alles ist 64-Bit, Ubuntu, Eclipse und das von mir verwendete JRE und JDK (jdk1.6.0_38).

Ich habe eine sehr kleine Android-App geschrieben, für deren Ausführung eine Klasse aus dem JDK benötigt wird.

Ich habe das Problem ein wenig isoliert und es neu erstellt, indem ich ein neues "Android Application Project" mit erstellt habeNur eine Zeile meines Codes (In der Hauptklasse der onCreate-Methode). Diese Linie:

BufferedImage buff = new BufferedImage (100,100, BufferedImage.TYPE_INT_RGB);

Eclipse fügt den erforderlichen Import automatisch hinzu:

import java.awt.image.BufferedImage;

aber fragt, dass ich die jars / JRE für diese Klasse hinzufüge.

Ich habe das jdk1.6.0_38 zu Eclipse in "Installed JREs" hinzugefügt (wie auf den Eclipse-Hilfeseiten beschrieben).

Im "Java Build Path" des Projekts habe ich es über "Add library" -> "JRE system library" -> "Workspace default JRE" hinzugefügt. Das JDK wurde automatisch zum Erstellungspfad des Projekts hinzugefügt.

Während der Kompilierung werden keine Fehler angezeigt. Nur beim Ausführen der Anwendung im Android-Emulator (jede AVD) erhalte ich folgende Fehlermeldung:

E/dalvikvm(828): Could not find class 'java.awt.image.BufferedImage', referenced from method com.example.usejdk.MainActivity.onCreate
W/dalvikvm(828): VFY: unable to resolve new-instance 467 (Ljava/awt/image/BufferedImage;) in Lcom/example/usejdk/MainActivity;
D/dalvikvm(828): VFY: replacing opcode 0x22 at 0x0009
D/dalvikvm(828): DexOpt: unable to opt direct call 0x0cdc at 0x0c in Lcom/example/usejdk/MainActivity;.onCreate
D/AndroidRuntime(828): Shutting down VM
W/dalvikvm(828): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
E/AndroidRuntime(828): FATAL EXCEPTION: main
E/AndroidRuntime(828):   java.lang.NoClassDefFoundError: java.awt.image.BufferedImage
E/AndroidRuntime(828):   at com.example.usejdk.MainActivity.onCreate(MainActivity.java:16)
E/AndroidRuntime(828):   at android.app.Activity.performCreate(Activity.java:5104)
E/AndroidRuntime(828):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
E/AndroidRuntime(828):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
E/AndroidRuntime(828):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
E/AndroidRuntime(828):   at android.app.ActivityThread.access$600(ActivityThread.java:141)
E/AndroidRuntime(828):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
E/AndroidRuntime(828):   at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(828):   at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(828):   at android.app.ActivityThread.main(ActivityThread.java:5039)
E/AndroidRuntime(828):   at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(828):   at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(828):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E/AndroidRuntime(828):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
E/AndroidRuntime(828):   at dalvik.system.NativeStart.main(Native Method)

Hier sind die Dinge, die ich ausprobiert habehat nicht funktioniert:

hinzufügen zu "eclipse.inimsgstr "die Position des jdk (" -vm /usr/lib/jvm/jdk1.6.0_38/bin "in 2 separaten Zeilen).Ich habe die "Standard-VM-Argumente" des Pfads "-Djava.library.path = / usr / lib / jvm / jdk1.6.0_38 / jre / lib" hinzugefügt.Die Verwendung von 32-Bit-JREs und JDKs sowie JRE / JDK7 - funktionierte (natürlich) nicht.Ich habe versucht, die JDK-JAR-Dateien hinzuzufügenmanuell in den "libs" Ordner und markiere "add to buildpath" - hat nicht funktioniert.Ich habe Eclipse deinstalliert und erneut mit ADT und Android SDK installiert ...

Nichts behebt diesen nervigen Fehler ...

Bitte beachten Sie auch diese:

Ich habe dafür gesorgt, dass meine.classpath Datei enthält den Standard-JRE-Eintrag (wie sie hier sagen)Ich habe versucht hinzuzufügenandere JAR-Dateien in den Ordner "libs" + "Add to Path" und mit ihnen - es hat gut funktioniert.Ich habe versucht, den gleichen Code (die eine Zeile) mit "import java.awt.image.BufferedImage;" in einemregulär Java-Projekt (kein android projekt) und machte das Projekt "Use Default JRE" - und eshat gut funktioniert! Warum funktioniert es in einem regulären Java-Projekt und nicht in einem Android-Projekt?

Ich vermute, es bedeutet, dass meine Eclipse-Installationtut haben die Fähigkeit, die JDK-Klassen zu verwenden, abernicht in Android-Anwendungen.

Was muss ich also tun, damit diese einzelne Codezeile ausgeführt wird?in einer Android-Anwendung?

Jede Hilfe wäre SEHR dankbar. Vielen Dank im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage