2013-02-08 1 views
30

Sto lavorando a un progetto libGDX e ho una classe chiamata CheerVArachnids che ha un'altra classe inline che è un listener di eventi. Quando eseguo questo progetto sul desktop funziona perfettamente. MA quando corro sul mio dispositivo Android, non riesce a trovare quella classe in linea e ottengo il seguente errore:Impossibile trovare la classe XXX a cui si fa riferimento dal metodo XXX. <YYY>

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

Ecco le parti importanti della mia classe:

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()); 
    } 
} 

Tutte le idee perché su Android, in fase di esecuzione non riesce a trovare quella classe inline?

+0

Qual è il resto del messaggio di eccezione? Sospetto che sia effettivamente un problema con la superclasse di PlaceUnitListener (e quindi la risposta di CodeNoob si applicherà). Che cos'è un "EventSubscriber <>"? –

risposta

46

Dal momento che alcune versioni di ADT devono impostare anche le librerie/i progetti da esportare.

Proposte di progetto -> Percorso di build Java -> Ordina ed esporta -> Controlla le tue fonti e le altre librerie che stai utilizzando.

Esegui queste impostazioni di esportazione per il tuo progetto Core e Android.

Quindi dovrebbe funzionare correttamente su Android.

+0

Questo avrebbe senso se si trattasse di una libreria esterna, ma questa è una classe definita correttamente in linea. Quindi non ci sono dipendenze esterne del progetto. Guarda come PlaceUnitListener è dichiarato sopra il costruttore. –

+1

Ho avuto questi errori molto spesso e il messaggio è spesso sbagliato. Qui era che, non riusciva a trovare l'Interfaccia/Classe che dovrebbe essere implementata, non mi spiego, giusto, MA, da dove prendi EventSubscriber? Questo è da una libreria esterna, giusto? – CodeNoob

+1

Hai ragione. Era così. Grazie CodeNoob. –

12

Nel mio caso, tutto ha funzionato fino a quando non ho installato i nuovi aggiornamenti per SDK ed Eclipse.

ho ottenuto un errore: "Impossibile trovare la classe ..."

ho trovato la soluzione in un altro sito 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

Funziona solo se sposto il barattolo in cima alla lista. Grazie mille @syp_dino! – UmbySlipKnot

+0

@UmbySlipKnot: benvenuto. –

0

primo luogo si dovrebbe: import XXX (Class) .java, Se sono stati aggiunti file jar libreria esterna importarli nella cartella lib. Dopodiché: Fare clic con il pulsante destro del mouse sul progetto -> Proprietà -> Percorso build Java -> Ordina ed esporta (scheda) -> selezionare Tutti -> premere OK -> Pulisci il progetto.

Spero risolvere questo problema