2010-11-27 7 views
1

Ich habe eine Klasse, die OrmliteSqliteOpenHelper erweitert, um ein Persistenz-Modul für eine Android-Anwendung bereitzustellen. Das Problem ist, dass, wenn ich auf diese Klasse vom Testprojekt in Eclipse aus zugreife, eine NoClassDefFound Exception ausgelöst wird. Der Quellcode scheint in Ordnung zu sein, da das Paket importiert wird und Eclipse keine Hervorhebung hat, um anzuzeigen, dass irgendetwas schief geht, aber es tut es.NoClassDefFound Fehler mit OrmliteSqliteOpenHelper

Hier ist der Kicker: nicht nur alles andere im Projekt funktioniert gut, wenn vom Testprojekt zugegriffen wird, aber wenn ich diese Datei in das Testprojekt verschiebe, funktioniert es perfekt! Das Problem ist, dass es sich im aktuellen Projekt befinden muss, damit andere Komponenten Anrufe an das Projekt senden können. Ist jemals jemand auf diesen Fehler gestoßen oder hat er eine Ahnung, wo ich vielleicht falsch liege?

Der Klassenpfad wird korrekt festgelegt, da alle anderen Klassen funktionieren und das Klassenprojekt im Hauptprojekt des Testprojekts immer hinzugefügt wird. Ich habe auch versucht, das OrmliteSqliteOpenHelper-Objekt in eine innere Klasse zu verschieben: Dadurch konnte die äußere Klasse sichtbar und berührt werden, aber sobald sie versuchte, die innere Klasse zu instanziieren, trat derselbe Fehler auf. Wenn ich diese Datei in beide Projekte im selben Paket kopiere, tritt ein Fehler auf, der besagt, dass "Klassenreferenz in vorverifizierter Klasse in unerwartete Implementierung aufgelöst" wird, wenn etwas im Hauptprojekt versucht, auf diese Klasse zuzugreifen. Offensichtlich besteht ein gewisser Unterschied in der Art, wie die Klasse zwischen den beiden Projekten kompiliert/gehandhabt wird.

Ich bin ziemlich ratlos:/Vielen Dank für jede Hilfe!

+0

Kyle, welche Klasse erhält die NoClassDefFound-Ausnahme? Die OrmliteSqliteOpenHelper-Basisklasse oder Ihre Unterklasse? Können Sie die abgespeckte Klassenhierarchie posten? – Gray

Antwort

0

Nun Freunde, ich habe anscheinend eine Lösung für dieses Problem zusammengehackt: Ich verknüpfte den gesamten 'src' Ordner aus dem Hauptprojekt in den für das Testprojekt. Wenn nun nach dem bestimmten Paket gesucht wird, in dem sich meine Datei befindet, sucht es zuerst die Datei in einem eigenen Quellbaum. Hurra!

Warum funktioniert das? Ich habe keine Ahnung, vielleicht könnte uns jemand dazu aufklären.
Funktioniert es? Vorerst ...

0

Es ist, wie ich das Problem beheben:

  • Entfernen OrmLite von Build Path des Testprojekts.
  • Exportieren Sie sie aus dem Hauptprojekt.