Saltar al contenido

Error Android – java.lang.NoClassDefFoundError sin motivo aparente

Cómo resolver el error NoClassDefFoundError en Android tras actualizar el ADT: limpiar el proyecto y marcar los .jar de la carpeta libs en Build Path.

Ramón Invarato

Este error puede darse de manera inesperada -antes funcionaba todo correctamente y de repente da este error- o por haber actualizado el ADT.

Se muestra el siguiente error en el Log que proviene de una de nuestras clases que hemos creado:

E/AndroidRuntime(5410): Caused by: java.lang.NoClassDefFoundError: miPropiaClaseDeEsteProyecto

 

También puede darse por alguna librería importada, como por ejemplo con la librería "libGoogleAnalyticsV2.jar", mostrando:

E/AndroidRuntime(5410): Caused by: java.lang.NoClassDefFoundError: com.google.analytics.tracking.android.EasyTracker

O como por ejemplo con la librería "gcm.jar", mostrando:

E/AndroidRuntime(5410): Caused by: java.lang.NoClassDefFoundError: com.google.android.gcm.GCMRegistrar

 

Solución 1

Probaremos limpiando el proyecto.

Nota: Recomendamos hacer una copia de seguridad del proyecto antes de continuar. Limpiar suele ser seguro, pero alguna vez limpia cosas de más.

Para ello iremos a la barra de herramientas a "Project" y en el menú desplegable a "Clean…"

Para Android en Eclipse hacer un Clean del proyecto 1 - www.jarroba.com

En la ventana que se nos abre seleccionaremos "Clean projects selected below" para poder seleccionar el proyecto que queremos limpiar, lo seleccionamos y pulsamos "OK".

Para Android en Eclipse hacer un Clean del proyecto 2 - www.jarroba.com

Comprobamos que funcione. Si sigue sin funcionar probamos la solución 2.

 

Solución 2

Primero miramos que la carpeta donde están los jar se llama "libs".

 librerias jar en la carpeta libs en Android - www.jarroba.com

Si no es así hay que renombrarla (a veces está como «lib» sin la «s»; «lib» sin «s» está mal nombrada, renombrar a «libs»). Para renombrar la carpeta pulsamos con el botón derecho del ratón sobre ella, luego elegimos «Refactor» y después «Rename…». En la ventana emergente que se abre le ponemos el nombre «libs» y aceptamos.

Renombrar carpeta libs - www.jarroba

Hecho lo anterior, continuamos. Pulsamos con el botón derecho del ratón sobre el proyecto. Seleccionamos «Build Path» y luego «Configure Build Path…».

Build Path de Eclipse para Android 1 - www.jarroba.com

En la pestaña "Order and Export". Veremos seguramente que están desmarcados los ".jar". Marcamos todos los que haya (Seguramente tengamos el que se llama "android-support-v4.jar"; en este ejemplo se ven otras dos librerías muy usadas en Android que son "gcm.jar" y "libGoogleAnalyticsV2.jar", podrías tener otras). Pulsamos el botón de "OK".

Build Path de Eclipse para Android 2 - www.jarroba.com

Probamos. Si sigue sin funcionar limpiamos el proyecto una última vez (hacer o rehacer la solución 1 y probar de nuevo). Ya debería de volver a funcionar todo correctamente.

«Error Android – java.lang.NoClassDefFoundError sin motivo aparente», de Ramón Invarato en jarroba.com, con licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0. Obra registrada en Safe Creative.

Ramón Invarato

Diseño y construyo plataformas de datos y sistemas inteligentes, y me motiva compartir esa experiencia aquí.

Te puede interesar

Error Android – Referencias perdidas

Cómo solucionar en Android el error «The type java.lang.String cannot be resolved» eliminando los imports de la clase y reorganizándolos con Control+Shift+O.

12 Dic 2011

Comentarios (1)

  1. Joaquin

    BUENISIMO!!!!

    Una Ayuda buenisima. He tenido que hacer los dos pasos consecutivamente, y problema RESUELTO!

     

    MUCHISIMAS GRACIAS!!

Deja un comentario


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.