14

Questo progetto ha funzionato bene prima dell'aggiornamento ad ADT22. Ho già perso un giorno perché non sapevo di dover scaricare gli strumenti di costruzione e temo che perderò un altro a causa di questo.ClassNotFoundException su AndroidAnnotations ha generato le classi dall'aggiornamento a ADT 22

Quando provo a costruire lo stesso codice che stava lavorando due giorni fa, ottengo questa eccezione:

com.cidaut.blueparking fatal error : Unable to instantiate activity \ 
    ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \ 
    java.lang.ClassNotFoundException: \ 
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \ 
    /data/app/com.cidaut.blueparking-1.apk 
java.lang.RuntimeException: Unable to instantiate activity \ 
    ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \ 
    java.lang.ClassNotFoundException: \ 
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \ 
    /data/app/com.cidaut.blueparking-1.apk 

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
    at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5041) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.ClassNotFoundException: \ 
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \ 
    /data/app/com.cidaut.blueparking-1.apk 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
    ... 11 more 

Non mi pare strano che si sta cercando di trovare la classe sul file APK, ma qualunque cosa. c'è qualche soluzione a questo?

A proposito, il mio classpath include la cartella di origine in cui AndroidAnnotations genera il codice, quindi non è questo il problema.

Ecco la mia Ordine e esportazione finestra

Eclipse/Order and Export

AndroidAnnotations log degli errori generazione classe

AndroidAnnotations class generation error log

EDIT: Ora si sta lavorando

La procedura che ho seguito è stato questo:

  1. Pulire e ricostruire tutto
  2. check tutto sulla Ordine e esportazione scheda di ogni progetto (sia il progetto principale e le librerie)
  3. Pulire e ricostruire tutto nuovo

Funziona ora. Non posso credere che ho perso quasi 12 ore a causa di questo ...

+0

Controllare se le classi esistono, controllare anche se i builder sono presenti e nel giusto ordine. – Snicolas

+0

Le classi DO esistono. Costruttori? Cosa intendi? – razielsarafan

+0

No, scusate, costruttori in cui una traccia sbagliata, sono sicuro che il processore di annotazione è attivo. – Snicolas

risposta

16

andare alla scheda "Ordine E Export" di "Configure Build Path" e fare clic sul segno di spunta accanto a tutti i tuoi librerie richieste

+0

Ok, avevi parzialmente ragione. Il problema non era nella scheda Ordine ed Esportazione del mio progetto, ma nella scheda Ordine ed Esportazione delle mie librerie. Ora esporto tutto in ogni progetto e funziona di nuovo. Grazie mille! – razielsarafan

10

ecco la soluzione:

  1. In Eclipse, fare clic destro sul nome del progetto e scegliere Proprietà

  2. Selezionare la scheda ordine e di esportazione, quindi assicurarsi che le librerie private Android sia selezionata

  3. Pulire il progetto, da Project -> Clean

Questo dovrebbe funzionare

+0

Questo dovrebbe essere tutto ciò che è necessario. – acedanger

+0

grazie, risolto il mio problema –

1

Popping qui con una risposta nel caso in cui qualcuno sta avendo questo problema in futuro. Ho aggiunto ActionBarCompat alla mia app che utilizzava AndroidAnnotations e stava avendo lo stesso problema. Risulta che tutte le librerie che vengono utilizzate da una particolare applicazione devono vivere all'interno dell'app principale.Quindi, anche se ABC era un progetto di libreria all'interno di Eclipse e il codice compilato, dovevo ancora includere ABC come libreria all'interno della mia applicazione.

3

Avevo avuto un problema simile - ho scoperto che c'era una mancata corrispondenza JAR della libreria di supporto inclusa in un progetto di riferimenti che stava causando il problema. Assicurandosi che ogni progetto stia usando la stessa versione della libreria di supporto, per me è stato risolto.

+0

Hai ragione, a volte capita a causa della mancata corrispondenza JAR –

+0

Sì, per qualche ragione quando si lavora su dispositivi inferiori all'API 21, avendo dipendenze duplicate in un modulo e un progetto causerà questo errore. Peccato che la traccia dello stack non fornisca un indizio! – galaxigirl

4

Ho avuto lo stesso problema e per me era dovuto all'opzione "Consenti alla cartella di output per la cartella di origine" nel progetto "percorso di sviluppo java". L'ho deselezionato e l'ho controllato di nuovo e il problema era sparito. Per qualsiasi motivo il percorso utilizzato era diverso da quello predefinito. Forse è dovuto a Android m2e.

+0

Oh, wow, ho passato anni su questo. Sto usando Android-maven-plugin 3.9.0-rc.2 con ADT 22.6.3.v201404151837-1123206. Finalmente sono passato a ** Properties | Java Build Path | Source ** e deselezionato e ricontrollato "Consenti cartelle di output per cartelle di origine" (sia per il mio progetto di applicazione che per il mio progetto di libreria) e ho fatto una compilazione pulita. Questo errore è andato via! Stranamente, sono tornato alle proprietà dei progetti, e questa opzione è ora _unchecked_! Ma almeno la mia app è in esecuzione ora. –