2012-03-27 13 views
19

Come risolvere questo NoClassDefFoundError. Ho integrato Zxing nella mia app, ogni cosa funziona bene. Poi ho aggiornato il mio SDK e plug-in di Eclipse, e quando faccio funzionare il progetto del registro diceAggiornamento sdk ottenuto NoClassDefFoundError per zxing

03-27 17:27:45.173: E/AndroidRuntime(8917): FATAL EXCEPTION: main 
03-27 17:27:45.173: E/AndroidRuntime(8917): java.lang.ExceptionInInitializerError 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.Class.newInstanceImpl(Native Method) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.Class.newInstance(Class.java:1429) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.os.Looper.loop(Looper.java:123) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at dalvik.system.NativeStart.main(Native Method) 
03-27 17:27:45.173: E/AndroidRuntime(8917): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.ResultMetadataType 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at records.model.CaptureActivity.<clinit>(CaptureActivity.java:94)` 

risposta

38

non ho dovuto mettere il vaso-libreria in attività o lib (s), ma spuntare solo la casella per questo barattolo in Proprietà -> Java Build Path -> "Ordine e Export" (era elencato in precedenza, ma non selezionato)

Potrebbe essere necessario eseguire un progetto> clean dopo che questo ha l'effetto! (Grazie mwengler e Mohamed)

+1

Questo ha funzionato per me una volta ho fatto un progetto> pulito. Se funziona per te in aumento così gli altri in difficoltà lo trovano. (E idealmente @Kishore accetterebbe questa risposta.) – mwengler

+0

@mwengler Grazie per il suggerimento pulito, ha funzionato solo per me quando ho fatto il clean. @ Grazie per l'utile risposta, vorresti per favore menzionare "Pulisci" nella risposta, perché ha funzionato solo per me con la pulizia! –

+0

Ho riscontrato lo stesso problema dopo l'aggiornamento di Android SDK. E questo metodo funziona. – flypen

0

Significa esattamente quello che dice. Stai utilizzando un codice di libreria che non hai effettivamente incluso nella tua app. Assicurati che il contenuto di core.jar dal progetto faccia parte del tuo progetto, come un progetto di libreria.

+0

Ho core.jar aggiunto nella cartella delle risorse e configurato come questo BuilPath -> config build -> Aggiungi vasi – Kishore

+0

Certo, ma non l'hai impostato per includere effettivamente le classi nell'app! –

1

Si fa riferimento alla Classe com.google.zxing.ResultMetadataType in CaptureActivity.java on line 94 ma la definizione per questa classe non può essere trovata (ClassDefNotFound). Se non può essere trovato, non deve essere sul tuo percorso di classe.

C'è probabilmente un file .jar da qualche parte sul disco che contiene com.google.zxing.ResultMetadataType (apparentemente core.jar) posizionarlo sul percorso di classe del progetto per risolvere questo problema.

+0

Ho aggiunto core.jar nella cartella delle risorse e configurato – Kishore

+0

Puoi confermare che questo è il core.jar appropriato? Se lo apri come file zip puoi individuare 'com.google.zxing.ResultMetadataType'? –

+0

sì se apro c'è il file com.google.zxing.ResultMetadataType.class – Kishore

0

Ho avuto la stessa cosa mi è successo con un .jar diverso anche dopo l'aggiornamento di SDK e plug-in.

Andrews rispondo sotto con il link stackoverflow.com/a/2248017/180295 con i punti 3 e 4 ha funzionato per me.

1

Per qualche motivo, ADT non include più le librerie dal percorso di generazione nel file .apk generato.

Per risolvere il problema, creare una cartella "libs" nella radice del progetto (ad esempio: bin, src, assets, libs) e inserire il file core.jar. Rimuovi tutte le altre istanze dal percorso di generazione e tutto dovrebbe funzionare correttamente.

NoClassDefFoundError - Eclipse and Android

1

questo ha funzionato per me (dopo circa 8 ore di guai). La chiave è che è necessario creare la cartella libs nel progetto CaptureClient, rilasciare core.jar, quindi aggiungere un riferimento a core.jar.

Quindi dal progetto, fare riferimento al progetto CaptureClient.

Wow, era circa un milione di volte più difficile di quanto avrebbe dovuto!

https://stackoverflow.com/a/2248017/1173800

11

Vai a Proprietà -> Java Build Path -> "Ordine e Esporta"

poi ordinare il core.jar alla prima posizione e selezionarlo!

è necessario pulire il progetto dopo l'operazione.Progetto -> pulita

che risolveranno il problema

+1

Il riordino verso l'alto non era necessario per me. Ho solo bisogno di spuntare la casella di controllo. Ah, questo deve essere fatto per la libreria zxing e per la tua app. –

0

Ho avuto lo stesso problema, ma ero utilizzando il nuovo Gradle costruire e Adroid Studio.

Che ha risolto per me è stato quello di andare al di fuori di Android Studio e fare un pulito e costruire dalla riga di comando utilizzando Gradle:

gradle clean 
gradle assembleDebug 

e l'eccezione NoClassDefFound magicamente è andato via

0

Nella mia caso il problema era con Android Build Tools avevo la versione 18 ma ho bisogno di Android Build Tools versione 19 o successiva, perché ho bisogno di avere la mia compatibilità JDK eclisse a 1.7 invece di 1.6 come CORE.JAR utilizzando Java versione 1.7.

Vorrei anche suggerire di guardare i messaggi nella console di Android durante il processo di costruzione che ti darà un'idea del problema esatto.

0

Aggiungi il core.jar alla cartella libs del tuo progetto Android e non aggiungerlo come un jar esterno nel percorso di sviluppo java.

Problemi correlati