2012-10-02 11 views
5

Por favor, alguien me explique qué significa este error y cómo evitarlo.NoClassDefFoundError - Rechazar re-init en la clase previamente fallida

Después de un tiempo mi aplicación Fuerza cierra debido a este error:

09-28 12:53:45.746 I/dalvikvm(29489): Rejecting re-init on previously-failed class Lcom/bartat/android/ui/task/AsyncTaskExt; v=0x0 
09-28 12:53:45.748 D/AndroidRuntime(29489): Shutting down VM 
09-28 12:53:45.755 I/am_crash(1146): [29489,com.bartat.android.secret,572996,java.lang.NoClassDefFoundError,com.bartat.android.ui.task.AsyncTaskExt,CommandsActivity.java,726] 
09-28 12:53:45.755 I/am_finish_activity(1146): [1079225264,123,com.bartat.android.secret/.CommandsActivity,crashed] 
09-28 12:53:45.750 W/dalvikvm(29489): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
09-28 12:53:45.752 E/AndroidRuntime(29489): FATAL EXCEPTION: main 
09-28 12:53:45.752 E/AndroidRuntime(29489): java.lang.NoClassDefFoundError: com.bartat.android.ui.task.AsyncTaskExt 

Este problema no puede resolverse mediante la reinstalación de la aplicación.

Si cambio el nombre del AsyncTaskExt al AsyncTaskExt2 por ejemplo, entonces funciona de nuevo por mucho tiempo. Pero después de algunas semanas/meses comenzó a tener este error nuevamente.

¿Qué significa? ¿Por qué se lanza y cómo evitarlo sin cambiar el nombre de la clase?

Por favor, ayúdame, Tamás

Respuesta

0

¿Estás segura es esta la primera excepción de que está recibiendo después de ejecutar su aplicación? Puede haber algunas excepciones no detectadas previamente.

+0

No sé qué causa este error, me refiero a si hay algún error antes de que suceda o no. Pero cuando se produce esta excepción, no hay otros errores en el registro. Supongo que el sistema (vm?) Almacenó en algún lugar que había un problema con esta clase. Pero aún no he atrapado la primera ocurrencia. – bartat

3

debe agregar usos-biblioteca en su AndroidManifest.xml

9

Esto ocurre cuando una clase no se pudo cargar para una variedad de razones. Lamentablemente, el nuevo tiempo de ejecución de ART no registra suficiente información sobre la causa de esto. Si consigues un dispositivo Android más antiguo con Dalvik, verás diferentes registros, que generalmente revelan la ofensa con más precisión.

La última vez que lo vi en vivo tuve que lidiar con un archivo JAR que en realidad no incluía ni enumeraba sus dependencias, así que al agregar la biblioteca dependiente correcta al archivo gradle lo resolvió. El problema más importante es determinar qué clases se han perdido, algo que dalvik logs/decompilation/documentation podría decirte.

Existen muchas otras razones por las que las clases no se pueden cargar en la totalidad del lenguaje Java, por lo que esta causa específica podría no ser universal.

+0

Esto me ayudó mucho. Agregar una dependencia JAR resolvió el problema. – Rediska

+0

Agregar una dependencia de JAR faltante solucionó esto también. ¡Gracias! – pdsouza

2

Empecé a tener este problema después de crear otro proyecto con New Relic analytics habilitado. Gradle daemon guardó en caché el agente de New Relic y no pudo ejecutar la otra aplicación.

Lo que ayudó fue

./gradlew --stop 
6

sucede para mí sólo si de ejecución instantánea está activado.

+0

gracias por ahorrar una tonelada de tiempo, aplausos :) –

+0

Muchas gracias. Está funcionando cuando desactivo la ejecución de insta. Todavía hay algunos problemas con la ejecución de insta? –

Cuestiones relacionadas