2012-03-26 10 views
55

Ho un progetto Android in IDE eclissi che funzionava. Dopo alcune importazioni e test, ho ricevuto l'errore: java.lang.NoClassDefFoundError.Android java.lang.NoClassDefFoundError

Nel mio progetto ho due pacchetti: quello principale e il secondo con alcune classi.

Quando si tenta di creare un'istanza di un oggetto dalla seconda classe di pacchetto nella classe di attività principale, viene visualizzato questo errore.

Ecco il logcat:

FATAL EXCEPTION: main 
java.lang.NoClassDefFoundError: com.neurospeech.wsclient.MDPIforEditorialBoard 
at milos.mdpi.Journals.<init>(Journals.java:41) 
at java.lang.Class.newInstanceImpl(Native Method) 
at java.lang.Class.newInstance(Class.java:1409) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1040) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893) 
at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4389) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 

trovato la soluzione al mio problema:

La soluzione può essere trovata qui: http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

+5

Hai aggiornato il tuo sdk Android a 17? – pleerock

+0

Sì @Pleerock, la risposta di Minsky ha risolto il problema. Grazie mille. –

+0

Controlla questo Q & A. Ha funzionato per me! http://stackoverflow.com/questions/16641739/android-error-caused-by-java-lang-noclassdeffounderror-android-support-v4-ut – MSquare

risposta

55

Hai recentemente aggiornato il plugin Android Eclipse (adt r17)? Poi il seguente link potrebbe aiutare:

How to fix the classdefnotfounderror with adt-17

Aggiornamento: Un anno è passato da quando la questione è stata sollevata. Terrò il link, perché anche nel 2013 sembra aiutare alcune persone a risolvere il problema. Ma per favore fai attenzione a quello che stai facendo, vedi il commento Erics qui sotto. Current ADT-Version is 22, I raccomanda di utilizzare la versione più recente.

+0

Grande, questo ha risolto il mio problema, grazie mille. –

+1

Questo ha funzionato anche per me, ma ho dovuto temporaneamente cambiare l'obiettivo del progetto (da 2.2 -> 4.0.3 nel mio caso) per farlo diventare effettivo. Forse perché le mie librerie erano già memorizzate in una directory denominata "libs" –

+2

ATTENZIONE, questo link dice di sbarazzarsi di tutto nella scheda Librerie, se segui queste indicazioni e sbarazzati della cartella virtuale "Dipendenze Android", dovrà creare un nuovo progetto e ricostruire il tuo programma da zero per recuperarlo. –

17

ho risolto il problema semplicemente aggiungendo biblioteche private del progetto principale per esportare qui:

Project Properties->Java Build Path->Order And Export 

e assicurarsi Android biblioteche private vengono controllati.

Screenshot:

enter image description here

Assicurarsi google-play-services_lib.jar e google-play-services.jar sono controllati. Pulisci il progetto ed esegui nuovamente l'eccezione classNotfound.

+0

che l'ha risolto per me. Grazie. Cordiali saluti, questo è successo dopo aver scartato le modifiche apportate al file .classpath del progetto tramite GIT e selezionando "Proprietà private Android" di nuovo aggiunge effettivamente queste due righe aggiuntive a .classpath. – Erwan

+0

Questo funziona per me. Grazie. – adrian4aes

1

Imaage

andiamo per ordine e l'esportazione di proprietà del progetto e assicurarsi che si sta compresi i vasi richiesti nel esportazione, questo ha fatto per me

27

Modificare il percorso di generazione in questo ordine, questo ha funzionato per me.

Assicurarsi che la /gen è prima /src

enter image description here

+0

Ogni volta Quando metto/gen prima di/src, eclipse mangia tutta la memoria e congela il mio computer – sma

1

Ho eseguito in questo problema un paio di volte di aprire vecchi progetti che includono altre librerie Android. Quello che funziona per me è:

spostare Android in cima alla scheda Ordine ed esportazione e deselezionarlo.

Sì, questo fa davvero la differenza. Forse è il momento per me di abbandonare ADT per Android Studio!

1

È inoltre possibile ottenere questo errore se si tenta di includere un jar che è stato compilato con jdk 1.7 anziché 1.6.

Nel mio caso, ho capito questo, cercando di confezionare la mia app con gli script Ant forniti dal SDK, invece di ADT, e ho notato questi errori, che ADT non mi ha mostrato:

[dex] Pre-Dexing libjingle_peerconnection.jar -> libjingle_peerconnection-2f82c9bf868a6c58eaf2c3b2fe6a09f3.jar 
    [dx] 
    [dx] trouble processing: 
    [dx] bad class file magic (cafebabe) or version (0033.0000) 
    [dx] ...while parsing org/webrtc/StatsReport$Value.class 
    [dx] ...while processing org/webrtc/StatsReport$Value.class 

Ho ricompilato il mio jar con jdk 1.6 e l'errore è stato corretto.

1

Provate ad andare Project -> Properties -> Java Build Path -> Order & Export E Conferma Private Libraries Android vengono controllati per il vostro progetto e per tutti gli altri progetti di libreria che si utilizza nella vostra applicazione.

0

Dopo aver controllato il percorso di compilazione Java, quindi aggiungere righe di codice nel file manifest.

<meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" />