1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

NoClassDefFoundError

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AquaBall, 23.03.2012.

  1. AquaBall, 23.03.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Ich habe eine Muster-Klasse erstellt, die in meinem Testprogramm gut funktioniert.
    Sie ist sauber gekapselt, in ein Package (package at.TyE.musterParser; ) verpackt, und hat nur die benötigten Methoden public.

    Der Compiler auch in AndroidUmgebung erkennt anscheinend auch alles richtig:
    und compiliert Warnungs-und Fehlerfrei
    Code:
    import at.TyE.musterParser.Muster;
    
    ...
        void formelInit(){
            Muster muster= new Muster("mein TestMuster");
        }
    
    In meinem Testprogramm (nur console) funktioniert es einwandfrei.
    Aber beim Start in AndroidUmgebung kommt immer der Laufzeit-Fehler:
    NoClassDefFoundError
    Was mach ich falsch?
     
  2. JanF, 24.03.2012 #2
    JanF

    JanF Android-Experte

    Beiträge:
    594
    Erhaltene Danke:
    79
    Registriert seit:
    31.03.2011
    Ich würde raten, dass die Klasse nicht in deinem classpath zu finden ist.
     
  3. AquaBall, 24.03.2012 #3
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Das hab ich schon durchsucht.
    Aber erstaunlicher Weise bin ich der Meinung, ClassPath gibts gar nicht mehr.
    Zumindest ergibt "echo %CLASSPATH%" gar kein Ergebnis.
    Ich vermute, dass das von Eclipse über Projekt-Einstellungen verwaltet wird.
    Oder lieg ich da falsch???

    Außerdem funktioniert die Classe ja in meinem Textprogramm (und einem neu angelegten 2. Testprogramm) einwandfrei.
    Die Einstellungen in "Eigenschaften/Java-ErstellungsPfad/Projekte" und ".../Sortieren" sind im Wesentlichen gleich.
    Nur dass beim Android-Programm mehr drin steht, und Android den Eintrag "Bibliothek JRE1.7" nicht verkraftet.

    Mein WorkAround zur zeit funktioniert: (Löste aber meine Unverständnis nicht, was falsch ist.)
    Ich habe die Musterklasse aus "TestProgramm/SRC" nach "AndroidPorgramm/SRC" verschoben. der folgende Fehler automatisch repariert. Nun läufts. Sowohl im AndroidProgramm, als auch in den Consolen-(Test)Programmen.

    Aber meine Unsicherheit bleibt:
    Was hab ich falsch gemacht?
    Wird's im nächsten Android-Programm noch funktionieren?
    Wie binde ich Packages richtig ein?
     
  4. deek, 24.03.2012 #4
    deek

    deek Fortgeschrittenes Mitglied

    Beiträge:
    442
    Erhaltene Danke:
    110
    Registriert seit:
    09.03.2011
    Seh ich das richtig, dass du deine Muster Klasse in einem Java Projekt hast und das in deinem Android Projekt verwenden willst und das Java Projekt referenzierst?

    Wenn ja geht das so nicht, eben weil das Android SDK kein komplettes Java JDK bereit stellt. D.h. Klassen die mit dem JDK compiliert werden, können nicht in einem Android Projekt referenziert werden, da das JDK nicht im A-SDK vorhanden ist.

    Also Objekte die du in einer App verwenden willst immer direkt in einem Android Projekt erstellen, dann hast du auch keine Probleme damit Features umzubauen, wenn das Android SDK die nicht unterstützt.
     
    AquaBall bedankt sich.
  5. AquaBall, 24.03.2012 #5
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Danke sehr aufschlussreich. War mir noch gar nicht bewusst.

    Erst jetzt fällt mir auf, dass ich ja noch gar kein richtiges Paket gemacht habe.
    Ist zwar sauber gekapselt und als package definiert, aber kein unabhängiges Modul, weil ich noch immer vom Sourcecode abhängig bin.

    Muss mich da erst weiter einlesen, wie ich ein echtes Package mache, von dem im PacketExplorer gar nichts erscheint.

    Dann müsste es wohl auch in Android verwendbar sein.

    Aber wie das geht, weiß ich noch nicht.
     
  6. deek, 24.03.2012 #6
    deek

    deek Fortgeschrittenes Mitglied

    Beiträge:
    442
    Erhaltene Danke:
    110
    Registriert seit:
    09.03.2011
    Hab Eclipse grad nicht auf, aber müsste ungefähr Rechte Maustaste auf Projekt "export as jar" oder so sein. Und das jar dann im Projektsetup vom Android Projekt als Library hinzufügen. Das wiederum müsste funktionieren wenn keine JDK-only Klassen verwendet werden.
     

Diese Seite empfehlen