34 votos

Android ClassNotFoundException

Estoy teniendo un problema con una de mis aplicaciones y me preguntaba si alguien me podría dar alguna idea de lo que tal vez la causa de ello.

Yo estoy haciendo un ClassNotFoundException, la importante línea de abajo es

E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0

Ahora esta aplicación ha sido durante más de un año y 2 días atrás me había dos separados de los usuarios en contacto conmigo en relación a este tema, uno en un HTC wildfire (2.1) y uno de un Samsung Galaxy S (?). Ahora no puedo recrear este problema en mis dispositivos (2,2 y 1,6) o un emulador (2.1) y realmente no averiguar por qué esta clase no puede ser encontrado por el cargador de clases. He pasado un rato buscando en google fue en vano, y espera que alguien tiene algunos consejos! Sólo parece ser cuando una actividad está cargado que cuando el contentView se establece, intenta inflar una Vista personalizada llamado GoBoardView que se extiende a la clase de Vista, este es solo hacer algunos simple lienzo de dibujo y no es el uso de cualquier tercero libs o de cualquier otra clase que tendría un packagename choque ni nada.

Por favor, ayuda! Sólo en caso de que su acumulación tema estoy actualizando todos mis SDK y a través de ADT de eclipse como se fue construyendo en contra de 1.6 y usando el viejo ADT, pero no tengo idea de si esto va a ayudar, sólo pensaba que vale la pena intentarlo. Cualquier consejo sería genial, gracias! (ver más abajo para EDITAR)

E/AndroidRuntime(21982): java.lang.RuntimeException: Unable to start activity ComponentInfo{couk.doridori.goigoFull/couk.doridori.goigoFull.Board}: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
E/AndroidRuntime(21982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
E/AndroidRuntime(21982): at android.app.ActivityThread.access$2200(ActivityThread.java:126)
E/AndroidRuntime(21982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
E/AndroidRuntime(21982): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(21982): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(21982): at android.app.ActivityThread.main(ActivityThread.java:4603)
E/AndroidRuntime(21982): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(21982): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(21982): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(21982): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime(21982): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
E/AndroidRuntime(21982): at android.app.Activity.setContentView(Activity.java:1629)
E/AndroidRuntime(21982): at couk.doridori.goigoFull.Board.onCreate(Board.java:31)
E/AndroidRuntime(21982): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
E/AndroidRuntime(21982): ... 11 more
E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0
E/AndroidRuntime(21982): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(21982): at android.view.LayoutInflater.createView(LayoutInflater.java:466)
E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
E/AndroidRuntime(21982): ... 22 more

EDITAR

Ok, la investigación de algunos de los enlaces que los usuarios que han comentado en la respuesta a esta pregunta, parece que el uso del contexto no es el adecuado para la carga de las actividades que pueden causar este problema. Esto me parece muy interesante, porque uno de los dos informes de registro que me han enviado tiene esta excepción precedida por

W/ActivityManager( 1222): startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { flg=0x20000 cmp=couk.doridori.goigoFull/.Games }

que es bastante auto explicativo - el problema es que no tengo idea de donde esta actividad podría ser iniciado desde donde se utiliza una no actividad de contexto, así que estoy un poco perplejo, pensando que maye ser algunos multitarea como capricho y su ser traído de nuevo en el primer plano de algo . Esto puede que, al parecer, causa problemas con el cargador de clases. Si esto sucedía en los usuarios de un teléfono de los que no puedo ver por qué no puedo reproducir este (y la mayoría de los otros usuarios no pueden).

La otra cosa que he encontrado a través de los enlaces que es interesante, es que algunas personas han tenido problemas debido a una incorrecta instalación del apk", que puede ser resuelto por un reinstalar, que he pedido a los usuarios que han tenido el problema a tratar (que no hacer una diferencia). También parece que una vez que el problema se encuentra (que es en el primer uso) será persistente.

34voto

Reuben Scratton Puntos 22314

No puedo dejar de notar que su Actividad nombre es couk.doridori.goigoFull.Board , pero su falta de Vista personalizada de clase es couk.doridori.goigo.customUI.GoBoardView ... parece que podría tener dos paquetes diferentes (goigo vs goigoFull).

Son por casualidad haciendo cosas inteligentes con proyectos de la biblioteca? Usted querrá ser muy cuidadosos con completo los nombres de clases en el código y en el diseño de xml...

(Si no por favor, añadir un poco más de información acerca de la configuración de proyecto y también pegar el layout XML que el layoutinflater se está ahogando)

7voto

Dalmas Puntos 13600

Yo ya estaba discutiendo este problema aquí : Android: no se puede crear una instancia de la actividad / ClassNotFoundException pero no pudimos encontrar una respuesta definitiva... sin Embargo Juan J Smith respuesta sobre el uso correcto de Contexto es interesante.

Algunas personas también resolvió su problema en este hilo y da algunas ideas.

Espero que esto ayude...

(Por cierto, me alegra ver a otro Ir programador de juegos !)

3voto

Kiran Puntos 31

He añadido un diseño personalizado y comenzó a ver ClassNotFoundException mensajes después de que sólo en la firma del paquete de la aplicación, pero la versión en desarrollo que se estaba trabajando bien. Yo estaba usando ProGuard y el nuevo diseño que he añadido no fue incluido en el "excluir" de la lista en el ProGuard config. He incluido el diseño personalizado en ProGuard excluir de la lista y que se ha solucionado el problema para mí.

2voto

Dan Puntos 29

Me encuentro con este problema a veces, cuando el desarrollo - ususally después de cambiar los nombres de los paquetes. Una limpieza rápida del proyecto corrige el problema para mí.

1voto

Christine Puntos 1601

Hay otra cosa que hace que "ClassNotFoundException". Hace algún tiempo, el proyecto android comenzó a usar el directorio libs para las dependencias. Si el frasco está en el directorio libs, es en el classpath automáticamente así que usted no tiene que añadir en la configuración del proyecto. Sin embargo, los frascos en "libs" no tiene fuentes adjunto (lo cual es ridículo). Así que si desea adjuntar una fuente, se puede mover un frasco de "libs" a "lib" y la agrega a la ruta de clases. Puede adjuntar la fuente. Pero he visto varias veces que esto desencadena ClassNotFoundExceptions en mis clases. Moviendo el frasco de nuevo se soluciona el problema.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X