2013-02-08 7 views
30

Ich arbeite an einem libGDX-Projekt und ich habe eine Klasse namens CheerVArachids, die eine andere Inline-Klasse hat, die ein Ereignis-Listener ist. Wenn ich dieses Projekt auf dem Desktop ausführen, funktioniert es gut. Aber wenn ich auf meinem Android-Gerät ausgeführt wird, kann es nicht, dass die Inline-Klasse finden und ich erhalte die folgende Fehlermeldung:Die Klasse XXX, auf die von Methode XXX verwiesen wird, konnte nicht gefunden werden. <YYY>

Could not find class 'com.bbj.cva.CheerVArachnids$PlaceUnitListener', referenced from method com.bbj.cva.CheerVArachnids.<init> 

Hier sind die wichtigen Teile meiner Klasse:

package com.bbj.cva; 

public class CheerVArachnids implements ApplicationListener { 

    class PlaceUnitListener implements EventSubscriber<PlaceUnitEvent> { 

     @Override 
     public void onEvent(PlaceUnitEvent event) 
     { 
      // 
     } 
    } 

    public CheerVArachnids() { 

     EventBus.subscribe(PlaceUnitEvent.class, new PlaceUnitListener()); 
     EventBus.subscribe(RemoveScreenObjectEvent.class, 
       new RemoveScreenObjectListener()); 
    } 
} 

Irgendwelche Ideen, warum auf Android, zur Laufzeit kann es diese Inline-Klasse nicht finden?

+0

Was ist der Rest der Ausnahmebedingungsnachricht? Ich vermute, es ist tatsächlich ein Problem mit der Oberklasse von PlaceUnitListener (und dann wird CodeNoobs Antwort gelten). Was ist ein "EventSubscriber <>"? –

Antwort

46

Seit einigen ADT-Versionen müssen Sie festlegen, welche Bibliotheken/Projekte ebenfalls exportiert werden sollen.

Projekt-Propertes -> Java-Build-Pfad -> Bestellung und Export -> Überprüfen Sie Ihre Quellen und andere Bibliotheken, die Sie verwenden.

Führen Sie diese Export-Einstellungen für Ihr Core- und Android-Projekt durch.

Dann sollte es auf Android gut funktionieren.

+0

Das wäre sinnvoll, wenn es eine externe Bibliothek wäre, aber dies ist eine Klasse, die direkt inline definiert ist. Es gibt also keine externen Projektabhängigkeiten. Sehen Sie sich an, wie der PlaceUnitListener über dem Konstruktor deklariert ist. –

+1

Ich hatte diese Fehler sehr oft, und die Nachricht ist oft falsch. Hier war es, dass es die Schnittstelle/Klasse nicht finden konnte, die implementiert werden sollte, ich kann es irgendwie nicht erklären, ABER, woher bekommst du EventSubscriber? Dies ist von einer externen Bibliothek oder? – CodeNoob

+1

Sie haben Recht. Das war's. Danke CodeNoob. –

12

In meinem Fall funktionierte alles gut, bis ich die neuen Updates für das SDK und Eclipse installierte.

bekam ich eine Fehlermeldung: "Es kann keine Klasse finden ..."

I-Lösung in einer anderen Website gefunden Stackoverflow.

I have a similar problem when using external jar (in my case openCSV). The reason I had a problem was due to a change in ADT 17 (or above). What I needed to do to resolve the problem was In Eclipse go to Properties -> Java build path -> Order and export. Mark my jar. Move jar to top of the list. The solution was found in the following page which reference to a very good article.

+7

Es funktioniert nur, wenn ich das Glas an den Anfang der Liste verschiebe. Vielen Dank @syp_dino! – UmbySlipKnot

+0

@UmbySlipKnot: Ihre Begrüßung. –

0

Zuerst sollten Sie: Import XXX (Klasse) .java, Wenn Sie hinzugefügt externe Bibliothek JAR-Datei sich in den LIB-Ordner importieren. Danach: Rechtsklick auf Ihr Projekt -> Eigenschaften -> Java Build Path -> Bestellung und Export (Registerkarte) -> wählen Sie Alle -> drücken Sie OK -> Reinigen Sie Ihr Projekt.

Ich hoffe, dies löst dieses Problem

Verwandte Themen