EventBus.getDefault() wird zur Laufzeit nicht gefunden - Kein Fehler beim Erstellen

  • Hallo,


    in meinem ersten Android Projekt will ich de.greenrobot.EventBus als "Ersatz" für das NSNotificationCenter von iOS Verwenden. Die App lässt sich ohne Probleme compilieren und starten. Während der Laufzeit erhalte ich aber folgende Ausgabe in LogCat:

    Zitat

    05-12 08:02:46.240: I/dalvikvm(15670): Could not find method de.greenrobot.event.EventBus.getDefault, referenced from method com.example.MyApp.MyClass.<init>
    05-12 08:02:46.240: W/dalvikvm(15670): VFY: unable to resolve static method 5832: Lde/greenrobot/event/EventBus;.getDefault ()Lde/greenrobot/event/EventBus;
    05-12 08:02:46.240: D/dalvikvm(15670): VFY: replacing opcode 0x71 at 0x0037

    Die App läuft ohne Probleme weiter, aber natürlich werden keine Events gesendet oder empfangen. Wie kann eine Klasse/Methode vorhanden sein (keine Probleme beim Compilieren) aber während der Laufzeit nicht gefunden werden?


    Den EventBus habe ich über die Projekt-Properties unter "Java Build Path/Libraries" als JAR eingebunden.

  • Es gibt keinen Ersatz für das NSNotificationCenter.
    Tu Dir selbst einen Gefallen und mach es gleich richtig anstatt zu versuchen auf Biegen und Brechen die iOS App zu portieren. Einerseits wird es nicht klappen und andererseits ist die User Experience eine völlig andere. Du machst die Dinge also nur schlimmer statt besser.


    Dein EventBus wird offenbar nicht mit ins fertige APK geschnürt. Deshalb ist es zur Compilezeit da, auf dem Gerät aber nicht mehr.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Keine Sorge, ich baue eine Android App und quetsche nicht iOS in ein Android-Kostüm. Dennoch macht lose Kopplung durch Notifications/Event auch unter Android an manchen Stellen Sinn und was ich bei iOS mit dem NotificationCenter erreiche kann ich unter Android mit dem EventBus lösen.


    Wie überrede ich den Eclipse dazu die JAR Datei bzw. die Klasse mit ins APK zu übernehmen? Ich habe die JAR Datei über "Properties/Java Build Path/Libraries" als External JAR eingebunden. Die JAR Datei wird mir im Package Explorer unter "Referenced Libraries" angezeigt. Die JAR Datei selbst liegt in einem Verzeichnis außerhalb des Projektordner, weil ja auch andere Projekte darauf zugreifen können sollen.

  • AFAIR musst Du in den Projekteinstellungen unter Java Build Path -> Order And Export das Häkchen vor der JAR setzen, damit diese JAR auch exportiert wird.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Probier mal die .jar-Datei nicht manuell zum Build-Path hinzuzufügen, sondern in den "libs"-Ordner unterhalb deiner Projektstruktur. Diese wird dann automatisch vom ADT zum Build-Path unter "Android Private Libraries" hinzugefügt. Ist unter Eclipse jedenfalls so - wie es in anderen IDEs aussieht bin ich mir nicht sicher, könnte aber so oder so ähnlich sein.



    block_

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!