2012-05-07 3 views
11

Da quando ho aggiornato ADT a 19, ho iniziato a ottenere l'errore seguente. Il problema si verifica ogni volta che avvio le mie app. Ho controllato tutto il post precedente relativo a questo, ma sembra che nessuno di loro aiuti. qualsiasi idea sarebbe molto apprezzato ...ClassNotFoundException dopo l'aggiornamento a ADT 18

La mia configurazione

  1. Al momento ho ADT 18, SDK 19, elcipse in Windows 7 a 64 bit.
  2. Uso il progetto di libreria che rende ashare.jar e tutti i miei jar esterni (cioè dropbox, codec di commons) sono nella cartella "libs" nel progetto Library (Ashare).
  3. Non uso proguard.

Come vediamo questo problema.

  1. Crea apk in Eclipse> {} MyProject> clic destro> Strumenti Android> Esporta pacchetto di applicazioni firmate
  2. installare l'apk in emulatore o dev.phone usando "adb installare XXX.apk"
  3. Avviare il app. Quindi, BOOM. genera l'errore.

Alcune cose evidenti sono

  1. ha cominciato ad accadere dopo ho aggiornato a ADT nella mia eclissi alla versione 18
  2. Succede solo quando faccio apk firmato e eseguo in emulatore o dev. Telefono.
  3. Non vedo alcun problema se eseguo la mia app utilizzando {MyProject}> Clic destro> Esegui come> Applicazione Android
  4. Quando ho controllato all'interno di classes.dex, vedo che mancano alcune classi. Non sono sicuro, ma mi sento processo di costruire non sta comprendendo tutte le classi in classes.dex
  5. durante l'esportazione, non c'è errore nella console di Eclipse (io uso l'opzione verbose in Android> Crea> Crea impostazione dell'uscita)

Java Exception

05-07 08:52:48.336: D/AndroidRuntime(3055): Shutting down VM 
05-07 08:52:48.336: W/dalvikvm(3055): threadid=1: thread exiting with uncaught exception (group=0x40a3e1f8) 
05-07 08:52:48.340: E/AndroidRuntime(3055): FATAL EXCEPTION: main 
05-07 08:52:48.340: E/AndroidRuntime(3055): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.acj0.barcodeexpdemo/com.acj0.barcodeexpdemo.Launcher}: java.lang.ClassNotFoundException: com.acj0.barcodeexpdemo.Launcher 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.os.Looper.loop(Looper.java:137) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at dalvik.system.NativeStart.main(Native Method) 
05-07 08:52:48.340: E/AndroidRuntime(3055): Caused by: java.lang.ClassNotFoundException: com.acj0.barcodeexpdemo.Launcher 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
05-07 08:52:48.340: E/AndroidRuntime(3055):  ... 11 more 

AGGIORNAMENTO 5/7/2012

  • Tutti i miei vasi sono nella cartella "libs" della Biblioteca progetto e vedo tutti incluso nella voce "Dipendenze Android"

UPDATE 5/18/2012 - TEMPORANEAMENTE RISOLTI

  • ho trovato soluzione temporanea. Subito prima dell'esecuzione di "Esporta pacchetto applicativo firmato", ho eseguito l'opzione "Pulisci" SENZA "Crea automaticamente" selezionata. Quindi, non vedo più l'errore. Non so perché funzioni. Se avete qualche idea, per favore fatemelo sapere.
+0

Pubblica l'origine delle classi che hai trovato mancanti dal tuo file dex. Prova anche a catturare il logcat generato durante il processo odex mentre l'apk è installato. –

+0

Ho avuto un problema simile ... Le librerie sono incluse in una cartella chiamata lib? O libs? Dovresti andare con il secondo ... – Shine

+0

Ho avuto la stessa eccezione generata quando ho aggiornato le versioni dell'SDK. La domanda e la risposta è ([qui] (http://stackoverflow.com/questions/9831019/updated-sdk-version-getting-classnotfoundexception-android-support-v4-view-vie)) – wdziemia

risposta

2

Inserisci i tuoi vasi esterni nella directory libs. Puoi dare un'occhiata a this link

+0

Grazie lujop. Ho tutti i miei vasi nella cartella "libs" e posso vedere tutti quelli che sono automaticamente inclusi nelle dipendenze di Android. – ChrsitopherJ

+0

Usi proguard? – lujop

+0

No. non usiamo proguard. Questo problema si verifica senza alcuna configurazione di proguard. – ChrsitopherJ

1

Ho avuto lo stesso problema, anche se ho fatto tutto come descritto nello link lujop mentioned. Ecco ciò che manca:

  1. Fare clic destro sul progetto> Crea percorso> Configura Build Path ...
  2. Fare clic su "Ordine e Esporta" scheda
  3. Tick le caselle di controllo accanto alle librerie (Android xxx, Android dipendenze) e altri progetti a cui ti riferisci
  4. Pulire il progetto
  5. Questo dovrebbe essere

mi auguro che aiuta!

0

Questo mi ha fatto impazzire anche per un giorno intero, solo per rendermi conto che il nome dell'applicazione in sciocco era sbagliato. Per nome dell'applicazione ho avuto: android: name = "com.diack.locdatafeeds"

mancava la mia attività principale android: name = "com.diack.locdatafeeds.Mainactivity"

Speranza che aiuta qualcuno